所以,我上课了:
@interface Controller : NSObject
{
UILabel* fileDescription;
}
@property(strong, nonatomic) UILabel* fileDescription;
我是否需要使用方法dealloc,其中属性fileDescription将等于nil?
例如:
-(void)dealloc
{
fileDescription = nil;
}
如果没有,谁将解除fileDescription使用的内存?
答案 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我们通常可以将它们定义为功能级别,类级别等等。希望这会有所帮助。