使用弧保释对象的init?

Ste*_*her 21 objective-c automatic-ref-counting

如何避免使用ARC创建对象?

我正在寻找与此相当的ARC(来自内存):

- (id)init
{
     if (( self = [super init] )) {
         if (!condition) {
             [self release];
             self = nil;
             return self;
         }
     }
     return self;
 }
Run Code Online (Sandbox Code Playgroud)

yuj*_*uji 26

只是摆脱呼吁release,你会没事的.既然你没有自己,就不会再引用旧的自我了,所以它将被解除分配.

- (id)init;
{
     if ((self = [super init])) {
         if (!condition) {
             return nil;
         }
     }
     return self;
 }
Run Code Online (Sandbox Code Playgroud)

  • @mattjgalloway`;`实际上允许使用Objective-C方法体.试试吧.使.h和.m之间的复制粘贴更容易. (4认同)
  • 也没有必要将"nil"分配给自己.您可以说`return nil`并且ARC将释放该对象. (3认同)
  • 啊,在LLVM文档中发现了这一点:"init系列中的方法隐式使用它们的self参数并返回一个保留的对象.这些属性都不能通过属性进行更改." http://clang.llvm.org/docs/AutomaticReferenceCounting.html#family.semantics.init (2认同)
  • @matt分号是(奇怪的)合法的.我认为有一个关于那个浮动的问题...... (2认同)