我想通过在 this topic 中用于 NSStrings 的相同样式创建一些 NSNumber 常量.也就是说,我正在创建单独的 constants.h/.m 文件并将它们导入到需要访问它们的类中。
最佳答案
这样做的麻烦在于没有编译时常量 NSNumber 这样的东西。只有 NSString 才能获得这种区别。 NSNumber 总是动态创建的。您可以通过使用在程序启动时运行的函数来初始化变量来伪造它。您的选择:
使用执行初始化的
+load
方法创建一个类。在包含常量的文件中,包含一个带有
__attribute__((constructor))
的函数。所以,例如:// Constants.m NSNumber *someGlobalNumber; __attribute__((constructor)) static void InitGlobalNumber() { someGlobalNumber = [[NSNumber numberWithInteger:1] retain]; }
但是当然,您不能在启动过程早期运行的任何其他函数中可靠地使用这些数字。这通常不是问题,但值得牢记。
另一种选择,我已经多次看到,是使用一个带有数字访问器的类,而不是提供对变量的原始访问。它的设计有点厚重,但也没有那么迷人,这也有它的魅力。
关于objective-c - Obj-C 中的 NSNumber 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268904/