字符串常量......最佳做法?

时间:2011-01-25 09:37:02

标签: iphone ipad preprocessor const

我正在寻找设置代码范围内使用的String常量

的最佳实践

选项1

  

extern const NSString * cDownloadCompleteNotification; (.h档案)

     

const NSString * cDownloadCompleteNotification = @“DownloadCompleteNotification”; (.m文件)

选项2

  

定义kNotificationDownloadComplete @“NotificationDownloadComplete”....(common.h)

有什么好处,不管是哪种方式? ......或仅仅是个人偏好的情况?

1 个答案:

答案 0 :(得分:1)

就个人而言,我选择了前者,尽管他们之间没有多少选择。两种情况下的内存使用情况都是相同的。

在#define中需要注意一些事项 - 例如如果你两次包含.h文件怎么办?

如果您使用define然后更改常量的值,您的某些文件可能会使用旧值进行编译,而某些文件可能会使用新值进行编译 - 您会发现解决无法调用通知处理程序的原因非常棘手!在建造之前你必须清理,以确保你改变了一切。如果使用extern NSString,则不会发生这种情况。*

希望这有帮助。

NB我不会将其声明为const - 在将其传递到postNotificationName:NSNotificationCenter上的方法时会收到编译器警告:(

* XCode应该足够聪明,可以将包含common.h的文件标记为需要重建,如果它发生了变化,但我发现它过去是错误的。