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