Static
1.what?
static 靜態(tài)的意思,用于修飾一個變量,作為私有的全局變量, 僅僅用static 修飾的變量是一個靜態(tài)變量
2.why?
我們想把一個變量的作用域擴展到整個類的時候,如果僅僅是這樣的話,其實我們的OC里的屬性完全可以替代。那么我們?yōu)槭裁催€會用到它呢?其實被static 修飾的變量或者是常量都有一個比較重要的特性,它會存在靜態(tài)區(qū),只初始化一次。這是我們可能想用到它,最大一個特點吧
3.how?
static int a = 0; 可以初始化,也可以不初始化,不初始化默認的就是0
Const
1.what?
被用來修飾常量的,表示是一個常量,修飾的變量是不可變的
2.why?
正如上邊說的,就是因為他修飾的變量是一個不可改變的,所以我們才會用到他
3.how?
可以加上static 修飾變量 static NSString * const name = @“Perfect”, 表示這個是一個靜態(tài)的常量,那么就是說他會在開機的時候初始化一次,而且是不可以改變的。注意:const 放在變量的前邊是修飾變量的,表示這個變量不可變,但是如果放在*前面或者static 后面,都表示修飾的是一個指針,那么表示這個指針地址不變,但是指針的內容可以改變
Extern
1.what?
剛才講到的都是一些局部變量,也就是只能在這個類里邊使用,其他的類沒有辦法直接訪問這些變量的,extern 修飾的變量正是解決了這一個問題,他所修飾的變量可以全局訪問
2.why?
上邊的what里邊其實已經解釋了,就是因為我們想在這個類之外,直接訪問這個變量
3.how?
可以直接使用 extern NSString *name = @“perfect” 表示一個全局變量
也可以配合const 使用 extern NSString * const name = @“perfect” 此時這個常量只被初始化一次,并且是全局變量