我正在寻找设置代码范围内使用的String常量
的最佳实践选项1
extern const NSString * cDownloadCompleteNotification; (.h档案)
const NSString * cDownloadCompleteNotification = @“DownloadCompleteNotification”; (.m文件)
选项2
定义kNotificationDownloadComplete @“NotificationDownloadComplete”....(common.h)
有什么好处,不管是哪种方式? ......或仅仅是个人偏好的情况?
答案 0 :(得分:1)
就个人而言,我选择了前者,尽管他们之间没有多少选择。两种情况下的内存使用情况都是相同的。
在#define中需要注意一些事项 - 例如如果你两次包含.h文件怎么办?
如果您使用define然后更改常量的值,您的某些文件可能会使用旧值进行编译,而某些文件可能会使用新值进行编译 - 您会发现解决无法调用通知处理程序的原因非常棘手!在建造之前你必须清理,以确保你改变了一切。如果使用extern NSString,则不会发生这种情况。*
希望这有帮助。
NB我不会将其声明为const - 在将其传递到postNotificationName:NSNotificationCenter上的方法时会收到编译器警告:(
* XCode应该足够聪明,可以将包含common.h的文件标记为需要重建,如果它发生了变化,但我发现它过去是错误的。