2010-08-24 18 views

回答

2

常量字符串文字,例如@"nits"被硬编码为objective-c二进制文件。字符串常量(如nitsnuts)必须定义为常量字符串,文字,因为它们也是硬编码的。作业nuts = nits不起作用,因为nits不是一个常量字符串,尽管该变量在运行时是恒定的。

有两种方法来解决这个问题:

  1. 写出字符串@"nits"两次
  2. 使用#define

这可能是这样的:

#define NitsNutsString @"nits" 
NSString* const nits = NitsNutsString; 
NSString* const nuts = NitsNutsString; 

或者您只能使用#define,但是se不能像常量字符串那样干净地在头文件中导出。

+1

你的意思是#define? – 2010-08-24 10:40:21

+0

没错,肯定是在我的大脑中有过一件不安的事情,修好了;) 现在感觉还好点:) – 2010-08-24 11:24:14

+0

你错过了一个。 – JeremyP 2010-08-24 12:27:53

1

我不知道Objective-C,但我会想象,通过从非文字值初始化某些东西,然后最终得到的不是一个常量 - 无论初始值声明如何。