我有自己的图书馆。并且在标题中定义了很多常量(例如动画持续时间)。但是,我所有的标题都是可见和可变的。如何防止其他人更改我的默认值?
Apple 库的标头中有一些 const 值,如下所示:
CA_EXTERN NSString * const kCATransitionMoveIn __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
我有自己的图书馆。并且在标题中定义了很多常量(例如动画持续时间)。但是,我所有的标题都是可见和可变的。如何防止其他人更改我的默认值?
Apple 库的标头中有一些 const 值,如下所示:
CA_EXTERN NSString * const kCATransitionMoveIn __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
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";