为什么 [[NSNumber alloc] init] return nil?
Why does [[NSNumber alloc] init] return nil?
我知道我应该使用指定的初始化器来init
一个NSNumber
。但是当我发现:
[[NSNumber alloc] init]
returns nil,我还是有点意外。
在 NSNumber
到 return nil
for init
的实施中做了什么(毕竟,NSObject
将 return self
) ?它是否首先在指定的初始化程序中尝试 init
底层 __NSCFNumber
?所以如果你通过默认的 init
,它 returns nil
因为底层 __NSCFNumber
是 nil
。为什么它不直接将 init
和 new
声明为 NS_UNAVAILABLE
?
我怀疑 NSNumber
的覆盖 init
只是 returns nil
。这是有效的 if an object cannot be created for some reason.
调用此初始化程序是无效的,因为在不知道您想要哪种数字的情况下无法创建对象。
未标记为 NS_UNAVAILABLE
的原因是该宏仅在 2014 年引入。
NSNumber is much older than that. 20 years older. It dates back to NeXTSTEP 从 1994 年开始(这就是 NS
前缀在所有 类 上的含义)。添加该宏将是一项重大更改。
我知道我应该使用指定的初始化器来init
一个NSNumber
。但是当我发现:
[[NSNumber alloc] init]
returns nil,我还是有点意外。
在 NSNumber
到 return nil
for init
的实施中做了什么(毕竟,NSObject
将 return self
) ?它是否首先在指定的初始化程序中尝试 init
底层 __NSCFNumber
?所以如果你通过默认的 init
,它 returns nil
因为底层 __NSCFNumber
是 nil
。为什么它不直接将 init
和 new
声明为 NS_UNAVAILABLE
?
我怀疑 NSNumber
的覆盖 init
只是 returns nil
。这是有效的 if an object cannot be created for some reason.
调用此初始化程序是无效的,因为在不知道您想要哪种数字的情况下无法创建对象。
未标记为 NS_UNAVAILABLE
的原因是该宏仅在 2014 年引入。
NSNumber is much older than that. 20 years older. It dates back to NeXTSTEP 从 1994 年开始(这就是 NS
前缀在所有 类 上的含义)。添加该宏将是一项重大更改。