当“super”被调用时,为什么[super init]会返回nil?是NSObject吗?
在我正在阅读的 Objective-C 书中,据说当 [init]
消息发送到 NSObject,有时它可能会返回
nil
,我们应该在发送更多消息到可能最终为 nil
的消息之前检查返回值。
self = [super init];
if (self) {
do stuff
}
但我问你,如果 NSObject
无法 init
本身,需要发生什么情况?
编辑:问题专门涉及 YourClass:NSObject.
Possible Duplicate:
In Objective-C why should I check if self = [super init] is not nil?
In Objective-C book i am reading, it is said that when [init]
message is sent to NSObject
, on occasion it may return nil
and we should check the return value, before sending more messages to what may end up being a nil
.
self = [super init];
if (self) {
do stuff
}
I ask you though, what needs to happen for an NSObject
to not be able to init
itself?
Edit: Question specifically deals with an instance where YourClass:NSObject.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NSObject
本身永远不会在init
上返回 nil,但是从它继承的其他类可能会返回 nil,因此始终检查init
的返回值被认为是一个好习惯。代码>.例如,这将返回 nil:NSObject
itself will never return nil oninit
, however other classes that inherit from it might, so it's considered good practice to always check the return value ofinit
. For example, this will return nil: