2012-02-27 31 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