当"超级"是NSObject时,为什么[super init]会返回nil?

Jam*_*sev 10 objective-c init super

可能重复:
在Objective-C中我为什么要检查self = [super init]是不是nil?

在我正在阅读的Objective-C书中,据说当[init]发送消息时NSObject,有时它可能会返回nil,我们应该检查返回值,然后再将更多消息发送到可能最终成为的消息nil.

self = [super init];

if (self) {
 do stuff
}
Run Code Online (Sandbox Code Playgroud)

我问你,虽然,需要采取什么措施对于NSObject不能够init自己?

编辑:问题专门处理YourClass:NSObject的实例.

Edo*_*odo 8

NSObject本身永远不会返回nil init,但是从其继承的其他类可能是,所以总是检查返回值被认为是好的做法init.例如,这将返回nil:

 [[NSData alloc] initWithContentsOfFile:@"path/to/a/file/that/does/not/exist"];
Run Code Online (Sandbox Code Playgroud)