2012-02-27 29 views
21

如何用ARC创建对象?用弧回报对象的init?

我在寻找的ARC相当于此(从内存中):

- (id)init 
{ 
    if ((self = [super init])) { 
     if (!condition) { 
      [self release]; 
      self = nil; 
      return self; 
     } 
    } 
    return self; 
} 

回答

26

刚刚摆脱通话到release,你会没事的。既然你没有自我,那么将不会再引用旧的自我,因此它将被释放。

- (id)init; 
{ 
    if ((self = [super init])) { 
     if (!condition) { 
      return nil; 
     } 
    } 
    return self; 
} 
+1

我当时希望是这样,但它看起来太简单了。 – 2012-02-27 18:17:06

+3

不需要为自己分配'nil'。你可以说'return nil',ARC会释放这个对象。 – 2012-02-27 18:18:39

+0

只会返回零工作? – 2012-02-27 18:19:23