NSString* const nits = @"nits";
NSString* const nuts = nits; // error: "initializer element is not constant"
這是如何完成的?在Objective-C中,你如何從另一個常量初始化常量?
NSString* const nits = @"nits";
NSString* const nuts = nits; // error: "initializer element is not constant"
這是如何完成的?在Objective-C中,你如何從另一個常量初始化常量?
常量字符串文字,例如@"nits"
被硬編碼爲objective-c二進制文件。字符串常量(如nits
和nuts
)必須定義爲常量字符串,文字,因爲它們也是硬編碼的。作業nuts = nits
不起作用,因爲nits
不是一個常量字符串,儘管該變量在運行時是恆定的。
有兩種方法來解決這個問題:
@"nits"
兩次#define
這可能是這樣的:
#define NitsNutsString @"nits"
NSString* const nits = NitsNutsString;
NSString* const nuts = NitsNutsString;
或者您只能使用#define
,但是se不能像常量字符串那樣乾淨地在頭文件中導出。
我不知道Objective-C,但我會想象,通過從非文字值初始化某些東西,然後最終得到的不是一個常量 - 無論初始值聲明如何。
你的意思是#define? – 2010-08-24 10:40:21
沒錯,肯定是在我的大腦中有過一件不安的事情,修好了;) 現在感覺還好點:) – 2010-08-24 11:24:14
你錯過了一個。 – JeremyP 2010-08-24 12:27:53