我已經閱讀了幾篇文章,並且在Apple的代碼指南中指出,在Objective-C中,字符串常量應該被定義爲extern NSString *const MY_CONSTANT;
,並且應避免使用#define指令。這是爲什麼?我知道#define
在預編譯時運行,但所有字符串將共享相同的內存地址。我讀到的唯一好處是,如果必須更新或更改常量,則不必重新編譯整個項目。所以我應該避免使用#define的原因?Objective-C#define指令被妖魔化爲字符串常量
感謝
UPDATE:在這種情況下是很好用的#define或有更好的方法嗎?
/* Constants Definition */
#define SERVER_URL @"http://subdomain.domain.edu.ar/Folder/"
NSString *const ServerURL = SERVER_URL;
NSString *const LoginURL = [email protected]"welcome.asp";
NSString *const CommandURL = [email protected]"com.asp";
爲什麼'#define HELLO @「World」'在Objective-C中不起作用? – Dirk 2009-12-29 23:17:53
'#define MyConstantString @「String Value」'不起作用? – Chuck 2009-12-29 23:17:56
#define只是一個文本替換,所以我不明白爲什麼#define MSG @「你好」不會工作 – GuidoMB 2009-12-29 23:24:34