2014-10-31 100 views
0

現在我用下面的方式在頭文件中聲明常量:聲明的NSString常量

static NSString *const RSMaxNumberOfIndustiresKey = @"MaxNumberOfIndustries"; 

它是正確的嗎?我讀了Constants in Objective-C問題,但我真的不知道我是否真的需要使用FOUNDATION_EXPORT在2個不同的地方聲明常量。

回答

1

號,您應該使用在Constants.h如下:

extern NSString *const RSMaxNumberOfIndustiresKey; 

而這Constants.m

NSString *const RSMaxNumberOfIndustiresKey = @"MaxNumberOfIndustries"; 

(即增加一個實現文件只是爲了保持字符串常量的單個實例) 。

使用您當前的方法意味着每個包含該標題的文件中的每個字符串都有一個副本。

+0

字符串文字不會被複制到Objective-C中的內存中。 – 2014-10-31 14:57:31

+0

@IanMacDonald是的,它不是世界末端的字符串常量,但一旦使用其他類型的對象,它將成爲一個問題。 – trojanfoe 2014-10-31 14:58:17

+2

@IanMacDonald一旦你從兩個不同的地方導入標題,你將會有一個可變的衝突。 – Sulthan 2014-10-31 14:58:58