2010-08-24 54 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,但我會想象,通過從非文字值初始化某些東西,然後最終得到的不是一個常量 - 無論初始值聲明如何。