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

时间:2011-07-18 01:10:54

标签: objective-c init super

  

可能重复:
  In Objective-C why should I check if self = [super init] is not nil?

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

self = [super init];

if (self) {
 do stuff
}

我问你,NSObject无法init本身需要做什么?

编辑:问题专门处理YourClass:NSObject。

的实例

1 个答案:

答案 0 :(得分:8)

NSObject本身永远不会在init上返回nil,但是从其继承的其他类可能是,所以始终检查init的返回值被认为是一种好习惯。例如,这将返回nil:

 [[NSData alloc] initWithContentsOfFile:@"path/to/a/file/that/does/not/exist"];