实现像这样的Objective C init方法有什么意义?

And*_*son 2 iphone cocoa-touch objective-c ios

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

我经常看到这个"if(self = [super init])"构造,我想知道它为什么会这样做.

- (id) init {

  if (self = [super init]) {

    // how could self = [super init]; ever fail?

  }

  return self;

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*pan 5

想象一下你的超类做到了这一点:

- (id)init {
    self = [super init];

    if (self) {
        self->foo = CreateExpensiveWidgetOverTheInternetByTrain();
        if (!self->foo) {
            // widget creation failed, bail out
            [self release];
            self = nil;
        }
    }

    return self;
}
Run Code Online (Sandbox Code Playgroud)

这就是如何.;)