objective-c - Obj-C 中的 NSNumber 常量

标签 objective-c ios constants nsnumber

我想通过在 this topic 中用于 NSStrings 的相同样式创建一些 NSNumber 常量.也就是说,我正在创建单独的 constants.h/.m 文件并将它们导入到需要访问它们的类中。

最佳答案

这样做的麻烦在于没有编译时常量 NSNumber 这样的东西。只有 NSString 才能获得这种区别。 NSNumber 总是动态创建的。您可以通过使用在程序启动时运行的函数来初始化变量来伪造它。您的选择:

  1. 使用执行初始化的 +load 方法创建一个类。

  2. 在包含常量的文件中,包含一个带有__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/

相关文章:

objective-c - 如何在 Cocoa Mac Os X 应用程序的 NSTableView 中为用户提供快速浏览体验?

ios - Swift3:转换 UIViewController 子类失败

ios - 将用户重定向到 iOS facebook 应用程序而不是浏览器窗口进行身份验证

iphone - UILabel lineBreakMode剪辑不剪辑文本

C++ 运算符重载?

ios - 检查我的 IOS 应用程序是否更新

javascript - 如何将附加文本附加到 UIWebView

objective-c - 对不是基于字符串的字符串的 nsarray 进行排序

php - 如何为整个项目定义一些常量?

c++ - 编译器生成的复制构造函数/赋值是否使用 const/volatile 呈现它的参数