gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 08:10:28 24 4
gpt4 key购买 nike

我想通过在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com