OC 使用static const extern 和#define聲明常量

static–只作用在編譯單元,即只在當前.m文件可見
const–不可變
extern–生成全局變量

利用#define定義常量

#define Time 3
有時候這樣做很方便,但是這種定義方法,看不出類型信息並且值會被修改。

用static和const來定義常量

static NSString *const name = @”jim”;
static表示只在當前.m文件可見,const表示不可改變的。

extern用法

有時候需要對外公開某個常量的時候就用到extern,一般命名的名字前要加上當前類的前綴以避免名稱衝突。

總結:

  1. 不要用預處理指令定義常量,因爲不含類型信息,編譯器只會在編譯前執行查找與替換操作,即使有人重新定義了常量值,編譯器也不會產生警告。
  2. 在實現文件中使用 static const來定義”只在編譯單元內可見的常量”,由於此常量不在全局符號表中,所以無需爲其名稱加前綴。
  3. 在頭文件中使用extern來聲明全局常量,並在相關實現文件中定義其值,這種能常量要出現在全局符號表中,所以其名稱要加類型做區分。

參考:編寫高質量iOS和OS X代碼的52個有效方法 第四條

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章