我之前已经问过这个问题,但我似乎无法在Apple的文档中找到相关信息; 也许你们有些人做过.
很多Objective-C代码都在.h
文件中使用了跨文件常量#define
.其他人在文件中使用.m
with常量的方法.extern
.h
我理解差异,包括优点和缺点,但Apple是否说明在iOS开发中使用哪一个?
在extern上使用#defines的麻烦在于编译器无法进行任何类型检查.如果你#define一个字符串,没有什么可以阻止你在你想要的地方使用它,比如一个数字.如果您使用静态NSString,如果您尝试在不期望字符串的地方使用它,编译器将发出警告.
Apple的建议是extern
:
定义用于通知名称和字典键等用途的字符串的常量.通过使用字符串常量,您可以确保编译器验证指定了正确的值(即,它执行拼写检查).
不可否认,他们有时会对此不一致.