我正在开发 Cocoa应用程序,并且我使用常量 NSString
s 作为存储我偏好的键名的方式。
我知道这是个好主意,因为它可以在必要时轻松更改 key 。
另外,这是整个“将数据与逻辑分开”的概念。
Anyway, is there a good way to make these constants defined once for the whole application?
我确信有一种简单而智能的方法,但现在我的类(class)只是重新定义他们使用的类(class)。
最佳答案
你应该创建一个像这样的头文件:
// Constants.h
FOUNDATION_EXPORT NSString *const MyFirstConstant;
FOUNDATION_EXPORT NSString *const MySecondConstant;
//etc.
(如果您的代码不会在混合 C/C++ 环境或其他平台上使用,您可以使用 extern
代替 FOUNDATION_EXPORT
。)
您可以将此文件包含在每个使用常量的文件中或项目的预编译头文件中。
您在 .m
文件中定义这些常量,例如:
// Constants.m
NSString *const MyFirstConstant = @"FirstConstant";
NSString *const MySecondConstant = @"SecondConstant";
Constants.m
应添加到您的应用程序/框架的目标中,以便将其链接到最终产品。
使用字符串常量而不是 #define
的常量的优点是您可以使用更快的指针比较 (stringInstance == MyFirstConstant
) 来测试相等性比字符串比较 ([stringInstance isEqualToString:MyFirstConstant]
) (而且更容易阅读,IMO)。
https://stackoverflow.com/questions/538996/