? 開發(fā)的時候,不免要定義一些常量,例如 #define offSet 30 這樣臊泰,把offSet替換為30寂屏。但是這樣定義出來的常量沒有類型信息,命名又未明確指出類型掌栅。有個辦法比#define更好,那就是類型常量:
static const CGFloat offSet = 30;
? 這樣的話就清楚描述了常量的含義,可以知道類型為CGFloat舶吗,代碼更容易理解。而且也要注意定義常量的位置择膝,如果不用公開的誓琼,可以在.m文件定義,一定同時要用static和const來聲明肴捉。
? 但是有時候需要對外公開某個常量值腹侣,此類常量需要放在“全局符號表”中,以便可以在定義該常量的編譯單元之外使用齿穗,定義方式與上述有所不同:
//.h文件
extern NSString *const SPNString;
//.m文件
NSString *const SPNString = @"String";
? 在.h文件中聲明傲隶,在.m文件中定義,注意本次命名添加了前綴窃页,因為定義為全局變量跺株,要避免命名沖突复濒,最好加上自己的前綴。SPNString是一個常量乒省,而且是指針類型的常量巧颈,指向 NSString對象。extern關鍵字是告訴編譯器袖扛,全局符號表中有一個叫SPNString的符號砸泛。編譯器無需查看其定義,即允許代碼使用此常量攻锰。一般來說晾嘶,此類常量必須要定義,而且切記只能定義一次娶吞。