Objective C中的常量

2021-09-11 05:28:43 字數 1340 閱讀 8677

在cocoa開發過程中,偏好設定中的鍵名使用 constantnsstring儲存。我認為這是乙個很好的idea,因為在必要的時候該方式允許我們方便改變常量值,而且,符合將資料和邏輯分離的理念。

有沒有一種好方法可以讓這些常量在整個應用程式中定義一次?我確信有一種簡單而聰明的方法,但是現在我的類只是重新定義它們使用的類。

建立乙個constants類,然後,標頭檔案中定義如下內容:

// constants.h

foundation_export nsstring *const myfirstconstant;

foundation_export nsstring *const mysecondconstant;

//etc.

如果**不需要其他平台或在c/c++混編環境下執行,可以將上述foundation_export替換為extern,即:

// constants.h

extern nsstring *const myfirstconstant;

extern nsstring *const mysecondconstant;

//etc.

可以在任何需要使用常量的地方引用該標頭檔案,或者將該檔案引入預編譯檔案中,如引入pc**件。

在constants.m檔案中定義如下內容:

// constants.m

nsstring *const myfirstconstant = @"firstconstant";

nsstring *const mysecondconstant = @"secondconstant";

應將constants.m新增到應用程式/框架的target中,以便將其鏈結到最終產品。

那麼,常量的方式與巨集定義#define有何不同呢?主要方便閱讀,**規範。

#ifdef __objc__

#import "constants.h"

#endif

#define myfirstconstant @"prefs_my_constant"
優點:**中修改常量值後不需要重新編譯整個專案即可執行。

使用多個全域性變數時,建議使用第一種做法,如果只是在乙個檔案中使用常量,則建議使用巨集定義的方式,在.m檔案中定義如下:

#define knsstringconstant @"constant nsstring"
constants in objective-c

Objective C 常量的設定

常量的設定,可以使用預處理巨集定義 define,還有使用 extern c 關鍵字。這裡記錄後者。h 檔案 import extern nsstring const url test 測試鏈結 m 檔案 nsstring const url test 這裡賦值 呼叫的方法 nslog url te...

Objective C 建立常量

新部落格wossoneri.com define巨集定義 define是一條預編譯指令,編譯器在編譯階段前期會將所有使用到巨集的地方簡單地進行替換.在預處理器裡進行文字替換,沒有型別,不做任何型別檢查,編譯器可以對相同的字串進行優化。只儲存乙份到 rodata 段。甚至有相同字尾的字串也可以優化,你...

Objective C中const常量是外連線的

標準c中const定義的變數是外連線的,即如果乙個編譯單元中定義了乙個全域性const常量,則其在其他編譯單元中是可見的,如果其他編譯單元也定義了同名const常量就會產生重複定義錯誤。這一點與c 不同,c 中const定義的變數是內連線的,即每個編譯單元定義的全域性const常量是自己獨有的。ob...