ARC:如何在对象生命周期结束时释放?

时间:2012-03-02 15:41:19

标签: objective-c cocoa automatic-ref-counting

当我使用ARC时,我正试图绕过物体的生命周期。从本质上讲,我无法找到在.h文件中全局声明时管理对象的最佳做法:

@interface MyClass : UIViewController {
    NSArray *arrayA;
}

@property (strong) NSArray *arrayB;

根据我的理解,arrayA和arrayB都声明为strong,因此当它们设置为= nil时会被释放,或者更改为指向不同的对象。当MyClass的对象发布时,它们是否也会被释放?或者我是否必须覆盖dealloc并将它们全部设置为nil?我的猜测是该属性将被释放,但arrayA将不会。

对一切使用属性对我来说没有意义。有一个保留对象需要在代码中使用不同方法但保持私有的最佳做法是什么?

2 个答案:

答案 0 :(得分:3)

  

当MyClass的对象发布时,它们是否也会被释放?

没有。当取消分配MyClass对象时,它们将自动释放。但这很好,这就是你想要的。

  

对一切使用属性对我来说没有意义。有一个保留对象需要在代码中使用不同方法但保持私有的最佳做法是什么?

您可以直接使用实例变量。 ARC将提供所需的保留/发布以使其全部工作。

答案 1 :(得分:0)

实际上,我认为你所寻找的是私有财产。在你的.m文件中声明它们,使用私有的@interface:

@interface myClass()
@property (strong, nonatomic) NSArray *arrayWithSemanticName;
@end

@implementation myClass
// my class goes here
...
@end

:)

修改

它也可以与Interface Builder一起使用,将它们设置为IBOutlets并且IBActions工作得很好,就像从IB拖动它们一样。