FOUNDATION_EXPORT 與 #define

網絡上搜索FOUNDATION_EXPORT出來的基本都是同一篇,但是看的不是很明白就自己做了個實驗。地址:http://blog.csdn.net/lingyu_ios/article/details/43836025

網絡上現有的結論:

FOUNDATION_EXPORT 與 #define 都可以用來定義常量

FOUNDATION_EXPORT定義的字符串直接比較的是指針地址

#define定義的字符串則是一一比較字符串的每一個字符是否相等

.h

.m

輸出:


可以發現字符串一樣的情況對象地址是一致的

那aStr3和aStr4為什么不能直接比對指針?

如果直接比對指針地址,編譯器就會出現警告

direct comparison of a string literal has undefined behavior

警告的大概意思是:這是因為NSString使用= =文字比較不保證像你所期望的。使用isEqual:或isequaltostring:相反,你可以擺脫這種預警和避免這一錯誤。

至于更本質的原因就需要大家進一步研究了。有知道答案的歡迎留言指教

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容