从[[class alloc] init]返回nil被认为是好习惯吗?

Lot*_*har 2 cocoa idioms

它是Objective-C中常见的习语.

我只看到[[NSImage alloc] initWithContentsOfFile:str]上使用它,它总是让我觉得有内存泄漏,因为我调用了alloc而且口头禅是:"调用alloc,你必须调用release" - 除非它其中一个你不需要的案例.

Bar*_*ark 6

在初始化对象时指示错误是一种常见的习惯用法.你是对的,但必须释放分配的实例.所以模式就是

- (id)init
{
  self = [super init];
  if(self != nil) {
    //... do init
    if(errorInInit) {
      [self release];
      return nil;
    }
  }

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