我瞭解使用常數在NSDictionary中你們的名字,以避免錯別字(MYNAME會自動完成VS @「MYNAME」不會)。使用NSDictionary時使用常量嗎?
我與一箇中等大小的詞典,現在和幾次工作,我已經misstyped鍵名,不得不花費一些時間跟蹤,其中我想念拼寫單詞。
我想知道,你認爲它的價值,而建立一個常量命名方案?
我瞭解使用常數在NSDictionary中你們的名字,以避免錯別字(MYNAME會自動完成VS @「MYNAME」不會)。使用NSDictionary時使用常量嗎?
我與一箇中等大小的詞典,現在和幾次工作,我已經misstyped鍵名,不得不花費一些時間跟蹤,其中我想念拼寫單詞。
我想知道,你認爲它的價值,而建立一個常量命名方案?
是的,但我建議適當定義字符串常量,而不是#define語句爲你的字符串,因爲字符串常量是類型安全的,每引用將使用相同的實際字符串對象,這就提高了使用isEqualToString:
來比較它們的性能。
要定義一個私人字符串常量,你可以把這個在您的.m文件:
static NSString *const MyConstant = @"MyConstant";
要公開,你可以把這個在您的.h文件,而不是,或者可以拆分定義通過把這個在您的.h:
extern NSString *const MyConstant;
這在.m文件:
NSString *const MyConstant = @"MyConstant";
+1非常好的答案和完全的路要走 - 希望這將被我的一些同事不斷使用定義這些東西讀取;雷電將衝上馬桶! – Till 2012-02-10 21:18:35
是的,這是值得的。 一致性在這樣的事情你會說:它減少了錯誤,並節省您的時間。
我通常創建一個文件GlobalDefinitions.h和地點宏,我可以在代碼而不是魔法字符串使用。
.h文件中
#define PERSON_NAME @"Person_name"
#define PERSON_BDAY @"Person_bday"
通過包括.h文件,你現在可以訪問你的值,像這樣
[dictionary objectForKey:PERSON_NAME];
請注意,常量字符串比#def'd字符串更好。看到http://stackoverflow.com/questions/538996/constants-in-objective-c – 2012-02-10 17:34:23
同意 - 請參閱我的答案下面如何定義字符串常量。 – 2012-02-10 17:34:54
我同意尼克的回答。 – 2012-02-10 17:36:37
是的,如果你使用他們製造了很多。它也使得重構(錯誤,重命名鍵)更容易。 – Costique 2012-02-10 17:28:56