1、const與宏 #define 的區(qū)別:
1、編譯時刻:宏是預編譯(之前處理), const是編譯階段(之后處理)。
2、編譯檢查:宏不做檢查,有錯誤不會提示, const會檢查,有錯誤會提示。
3、宏的好處:宏能定義方法,const不能定義方法 只能用常量
4、宏的壞處:大量使用宏,容易造成編譯時間久。
// 宏
#define DEMO @"www.baidu.com"
2、static與const結合使用
1、變量用來 static 與const聲明了,如果試圖修改由const修飾的變量,那么編譯器就會報錯。
2、蘋果官方不推薦我們使用宏, 推薦使用const常量。
// 字符串常量
static NSString * const demo = @"www.baidu.com";
3、extern與const 結合使用
在開發(fā)中需要在多個文件中經(jīng)常使用同一個字符串常量,可以使用extern與const結合使用。
1、static與const 結合:在每個文件都需要定義一份靜態(tài)全局變量。
2、extern與const結合:定義一份全局變量,多個文件都可以訪問。
有時候需要對外公開某個常量。比方說,你可能要在類代碼中調(diào)用NSNotificationCenter以通知他人。用一個對象來派發(fā)通知,令其它欲接收通知的對象向該對象注冊,這樣就能實現(xiàn)此功能。
.h文件
extern NSString *const Demo;
.m文件
NSString *const Demo = @"www.baidu.com";
這樣定義常量要優(yōu)于使用#define預處理指令,因為編譯器會確保常量值不變。一旦 .m 文件中定義好了,即可隨處使用,而采用預處理指令定義常量可能會無意中修改,從而導致應用程序各個部分使用的值互不相同。
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。