我需要在ARC中使用dealloc方法吗?

时间:2013-01-24 12:13:48

标签: iphone ios objective-c automatic-ref-counting

所以,我上课了:

@interface Controller : NSObject
{
    UILabel* fileDescription;
}

@property(strong, nonatomic) UILabel* fileDescription;

我是否需要使用方法dealloc,其中属性fileDescription将等于nil?
例如:

-(void)dealloc
{
    fileDescription = nil;
}

如果没有,谁将解除fileDescription使用的内存?

5 个答案:

答案 0 :(得分:81)

通常,您不需要提供子类dealloc方法,因为ARC管理实例变量的生命周期。

但是,除了释放对象之外,执行清除非常有用,例如删除观察者或干净地关闭网络连接。因此,您可以在ARC下继承dealloc,但不允许您在子类方法中调用[super dealloc]

然而,在您的特定情况下,它不是必需的。

答案 1 :(得分:8)

没有

dealloc中不需要ARC方法。

但是,如果您想在视图被解雇或释放时执行一些清理任务。这是最好的地方,在这种情况下你可以实现它。

例如:

您正在视图中运行计时器,并且正在更新您的视图。当您解除视图时,您需要停止该计时器。在那种情况下你可以使用dealloc方法并在那里停止计时器。

类似于NSNotification观察者。

答案 2 :(得分:6)

如果您使用ARC。

不需要使用dealloc和release,编译器知道你的属性和对象是强/弱的,所以它会管理它。

编辑:

如果您使用dealloc&等核心框架对象,则需要

CG...方法。 CF...。即使您创建了需要删除通知的观察者,dealloc也是删除服务器的最佳位置。

答案 3 :(得分:0)

并且不是因为ARC不需要dealloc。

答案 4 :(得分:0)

当您使用ARC时,您不必使用dealloc Complier将根据属性,变量或控件的范围设置autoreleasePool。它将release记忆。有不同类型的autoreleasepool我们通常可以将它们定义为功能级别,类级别等等。希望这会有所帮助。