【问题标题】:Why does [[NSNumber alloc] init] return nil?为什么 [[NSNumber alloc] init] 返回 nil?
【发布时间】:2021-12-21 00:16:59
【问题描述】:

我知道我应该使用initNSNumber 的指定初始化程序。但是当我发现: [[NSNumber alloc] init] 返回零,我还是有点惊讶。 在实现NSNumberinit 返回nil 时做了什么(毕竟NSObject 将返回self)?它是否首先在指定的初始化程序中尝试init 底层__NSCFNumber?因此,如果您通过默认的init,它将返回nil,因为底层__NSCFNumbernil。为什么不直接将initnew 声明为NS_UNAVAILABLE

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    我怀疑 NSNumber 的覆盖 init 只是返回 nil。这是有效的if an object cannot be created for some reason

    调用这个初始化器是无效的,因为在不知道你想要什么样的数字的情况下无法创建对象。

    没有标记为NS_UNAVAILABLE的原因是该宏是在2014年才引入的。

    NSNumber 比这要老得多。大了20岁。它可以追溯到 1994 年的 NeXTSTEP(这就是 NS 前缀在所有这些类中的含义)。添加该宏将是一项重大更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-05
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 2014-11-11
      • 2021-12-03
      相关资源
      最近更新 更多