define
- 項目常用字符串及方法代碼宏定義(以項目前綴開頭)
#define FYAppKey @"appKey"
#define FYUserDefaults [NSUserDefaults standardUserDefaults]
const
const:意為常量贯莺,當有字符串常量的時候,蘋果推薦我們使用const编饺,使其成為全局只讀變量乖篷,如下:
NSString * const FYAppKey = @"appKey";
const 和 define的部分區(qū)別
define:
預(yù)編譯、不檢查錯誤透且、可以定義代碼片段,宏過多會導(dǎo)致編譯時間過長
const:
編譯時撕蔼、檢查錯誤豁鲤、不可以定義代碼片段,const在誰前面就是修飾誰
備注:const修飾的是其后的變量,被其修飾的變量變成只讀
static
static int i = 0; // example
- 修飾局部變量時鲸沮,程序一運行琳骡,就會給static修飾的變量分配內(nèi)存,并且無論怎么調(diào)用讼溺、修改楣号,都只會分配一次,延長其生命周期會伴隨整個項目周期存活
- 修飾全局變量時怒坯,作用域會修改炫狱,只能在當前文件下可用,比如某個 .m 文件(如果想要使用全局變量剔猿,此時可以使用extern 聲明一下视译,如下)
extern
extern int i ; // example
- 聲明外部的局部變量,只能用于聲明归敬,不能用來定義變量
- 工作原理酷含,會先在當前文件下尋找有沒有該變量,如果沒有就會在外部文件中尋找(讓我想起了#import)
static和const一起使用
static NSString * const name = @"fy"; // 只能在該文件下使用的全局變量
extern和const一起使用如果項目中使用到了整個項目都需要使用的全局變量建議這樣做
/*
為了方便開發(fā)汪茧,一般這種變量不能定義在某一模塊中椅亚,
在Global.m中定義一個不允許修改的全局變量
*/
NSString * const FYAppKey = @"appKey";
/*
在Global.h中聲明這個全局變量
*/
extern NSString * const FYAppKey;
使用的時候直接導(dǎo)入Global.h即可