1、靜態變量:
static 修飾的變量,是一個私有的全局變量;在 OC 中 static 修飾的變量只作用于它聲明所在的 .m 實現文件中,同時必須放 @implementation 外面或方法中,它只在程序啟動初始化一次。
static int duration;
2、靜態常量:
當被 static 修飾的變量同時被 const 修飾時,改變量變為常量,不可變,并且“只在編譯單元內可見”,常用來替代 #define 宏,這樣當修改其值時,編譯起會報錯。
static const NSTimeInterval AnimationDuration = 0.5;
static NSString *const AnimationName = @"Fade";
3、全局變量/常量:
extern 修飾的變量,是一個全局變量,當同時被 const 修飾時,變為一個全局常量,在頭文件中使用 extern 來聲明全局常量,并在相關實現文件中定義其值。這種常量要出現在全局符號表中,所以其名稱應該加以區隔,通常與之相關的類名做前綴。
// .h 文件
extern NSString *const WCYAnimationName;
// .m 文件
NSString *const WCYAnimationName = @"Fade";