我有自己的图书馆。并且在标题中定义了许多常量(例如动画持续时间)。但是,我的所有标题都是可见的和可更改的。如何防止他人更改我的默认值?
Apple库的标题中有一些const值,如下所示:
CA_EXTERN NSString * const kCATransitionMoveIn __OSX_AVAILABLE_STARTING(__ MAC_10_5,__ IPHONE_2_0);
答案 0 :(得分:3)
Objective-C仍然是,C。也许旧系统有问题,这就是你在那里看到宏的原因。无论如何,对于任何内置类型,你仍然应该是安全的。
如果你将某些内容声明为“extern”,编译器会将其视为“好吧,我看到有人声明了外部东西。我不需要知道它是什么,因为某些外部单元会定义它链接器将处理其余部分。
这段话会让我对C警察感到麻烦,但它足够接近实际的解释。因此,您可以在头文件中执行此操作...
extern int const TheAnswerToLifeTheUniverseAndEverything;
然后,在你的一个实现文件中(在@ implementation / @ end部分之外)......
int const TheAnswerToLifeTheUniverseAndEverything = 42;
注意,在“现代”Xcode版本中,您可以对对象执行相同的操作。注意“const”,这意味着我们有一个指向NSString的常量指针。
// In header
extern NSString * const TheAnswerToLifeTheUniverseAndEverythingString;
// In source
NSString * const TheAnswerToLifeTheUniverseAndEverythingString = @"42";