我想在我的.m文件中定義一個常量。我可以在這裏看到兩種選擇:靜態常量Vs定義指令
static NSString *const kMyLabel = @"myLabel";
#define kMyLabel @"myLabel"
哪一個是最好的?在這裏使用static有任何問題嗎?
我想在我的.m文件中定義一個常量。我可以在這裏看到兩種選擇:靜態常量Vs定義指令
static NSString *const kMyLabel = @"myLabel";
#define kMyLabel @"myLabel"
哪一個是最好的?在這裏使用static有任何問題嗎?
唯一的區別是,你可以把變量的地址,而你不能接受一個常量字符串表達式的地址(這是宏減少到)。如果可能,我寧願避免#define
,所以我會選擇前者,但這只是一個風格問題。
從使用的角度來看,大部分情況並不重要。但是使用靜態方法有一個小優點,即代碼中常量的每個用法都是指向完全相同對象的指針(大多數情況下),而#define
方法將創建該字符串的副本。我相信在最近的編譯器中,它足夠智能地將defines
作爲一個對象,但爲了安全起見,我只是使用static
方法。
都不會創建字符串的副本。常量字符串在編譯單元中是唯一的。 – Chuck 2011-01-24 20:59:37
明白了。謝謝! – Abhinav 2011-01-24 21:53:50