static:和extern是用來設置作用域的 const:設置變量只可以被讀,不可以被修改
用static修飾的變量,在其所限定的作用域中只會有一分內存
不管這個函數被調用多少次,這個static修飾的變量只會有一分內存,也就是說當這個變量多次被修改,都是在上一次基礎上修改,不會從頭再來
該文件中的函數都可以訪問到,并且不同函數在對該變量修改時都是在上一個函數修改的基礎上修改的
static 限制了變量的作用域只在該文件里,所以加上static在別的文件中國定義一個相同的static沒有問題 沒有static修飾的全局變量,要是在不同文件中定義了相同的變量名,程序會報錯
用extern修飾的變量,可以被其他類所訪問,凡是引用了extern所修飾的變量的頭文件,那么就可以使用該變量。
但是要注意因為static修飾的不在全局符號表中,所以不用區分變量名extern修士的在全局符號表里面,所以要區分。相當于一個文件中的宏定義
在.h文件中
extern NSString *const hello;在.m文件中賦值
NSString *const hello = @"world";可以用于發送通知,這樣就不用知道name,只需要使用這個變量就可以了
在iOS開發中的一種編程技巧:多用類型常量,少用#define預處理命令
static限制了變量的作用域,但是#define沒有,如果我們僅僅想在一個文件內部使用一個常量,而不影響其他的文件的宏,如果用define,那么所有導入了該文件的那些文件中要是有一個相同的變量,那么這些變量都會被替換 static 形式的常量定義,可以知道其類型,代碼可讀性好 const的修飾使得該變量在修改會保存,確保其不會被修改,但是#define卻不會,值可能會被修改
新聞熱點
疑難解答