object-C中的常数

object-C中的常数

我在开发一个可可粉应用程序,我使用常量NSStrings作为存储我的首选项的键名的方法。

我理解这是一个好主意,因为它允许在必要时很容易地改变键。另外,这是一个“把你的数据和你的逻辑分开”的整体概念。

无论如何,是否有一种为整个应用程序定义一次这些常量的好方法?我确信有一种简单而明智的方法,但现在我的类只是重新定义它们使用的方法。


Qyouu
浏览 519回答 3
3回答

隔江千里

您应该创建一个头文件,如// Constants.hFOUNDATION_EXPORT NSString *const MyFirstConstant;FOUNDATION_EXPORT NSString *const MySecondConstant;//etc.(你可以用extern而不是FOUNDATION_EXPORT如果您的代码不用于混合C/C+环境或其他平台)可以将此文件包含在使用常量的每个文件中,也可以包含在项目的预编译头中。在.m文件中定义这些常量,如下所示// Constants.mNSString *const MyFirstConstant = @"FirstConstant";NSString *const MySecondConstant = @"SecondConstant";应该将Constants.m添加到应用程序/框架的目标中,以便将其链接到最终产品。使用字符串常量代替#defineD常量是可以使用指针比较来测试等式的(stringInstance == MyFirstConstant),它比字符串比较快得多([stringInstance isEqualToString:MyFirstConstant])

桃花长相依

最简单的方法:// Prefs.h#define PREFS_MY_CONSTANT @"prefs_my_constant"更好的方法:// Prefs.hextern NSString * const PREFS_MY_CONSTANT;// Prefs.mNSString * const PREFS_MY_CONSTANT = @"prefs_my_constant";第二个优点是,更改常量的值并不会导致整个程序的重建。

GCT1015

还有一件事要提。如果需要一个非全局常量,则应使用static关键词。例// In your *.m filestatic NSString * const kNSStringConst = @"const value";因为static关键字时,此Const在文件之外不可见。轻微更正@QuinnTaylor:静态变量在编译单元..通常,这是一个单一的.m文件(如本例所示),但如果在其他地方包含的标头中声明.m文件,它可能会咬死您,因为编译后会得到链接器错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS