2011-01-25 90 views
0

我正在尋找設置碼範圍內使用字符串常量的最佳實踐字符串常量...最佳實踐?

選項1

的extern常量的NSString * cDownloadCompleteNotification; (.h文件)

const NSString * cDownloadCompleteNotification = @「DownloadCompleteNotification」; (m文件)

選項2

限定kNotificationDownloadComplete @ 「NotificationDownloadComplete」 ....(COMMON.H)

是有任何好處,一種方式或其它? ...或者只是個人喜好的情況?

+0

[Objective C中的常量]的可能重複(http://stackoverflow.com/questions/538996/constants-in-objective -c) – zoul 2011-01-25 10:32:28

回答

1

就我個人而言,我選擇前者,但他們之間沒有多少選擇。內存使用情況在兩種情況下都是相同的。

在#define中有一些值得注意的事情 - 例如如果包含.h文件兩次,該怎麼辦?

如果你使用了一個define然後改變了這個常量的值,那麼你的一些文件可能會被編譯爲舊值,而另一些則會被編譯 - 你會發現爲什麼你的通知處理程序沒有被調用是非常棘手的!爲了確保你改變了一切,你必須在建造之前進行清潔。如果您使用extern NSString,則不會發生這種情況。*

希望有幫助。

NB我不會宣佈它爲const - 路過時到postNotificationName你會得到一個編譯器警告:方法上NSNotificationCenter :(

*的XCode應該足夠聰明來標記文件,其中包括COMMON.H作爲需要重建,如果它發生變化,但我發現它在過去是錯誤的。

+0

非常有幫助..謝謝 – MDMonty 2011-01-25 10:40:05