如何隐藏我在静态库中定义的常量?

时间:2012-04-19 14:23:49

标签: ios static-libraries

我有自己的图书馆。并且在标题中定义了许多常量(例如动画持续时间)。但是,我的所有标题都是可见的和可更改的。如何防止他人更改我的默认值?

Apple库的标题中有一些const值,如下所示:

CA_EXTERN NSString * const kCATransitionMoveIn     __OSX_AVAILABLE_STARTING(__ MAC_10_5,__ IPHONE_2_0);

1 个答案:

答案 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";