繁体   English   中英

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

[英]Do I need use dealloc method with ARC?

所以,我上课了:

@interface Controller : NSObject
{
    UILabel* fileDescription;
}

@property(strong, nonatomic) UILabel* fileDescription;

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

-(void)dealloc
{
    fileDescription = nil;
}

如果没有,谁将解雇f​​ileDescription使用的内存?

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

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

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

没有。

你不需要ARC dealloc方法。

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

例如:

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

类似于NSNotification观察员。

如果您使用ARC。

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

编辑:

如果你使用像CG...CF...这样的coreframework对象,则需要dealloc方法。 即使您为需要删除它的通知创建观察者, dealloc也是removeObserver的最佳位置。

Ans是NO因为ARC不需要dealloc。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM