正如我在 ARC 中所了解的,您不需要手动释放对象,它会自动为您完成。但有多少责任还是我的?我知道局部变量nil
在方法结束时被自动设置为。但是强大的属性呢?我是否必须将它们设置为nil
像dealloc
或viewDidUnload
的方法?强属性会自动释放吗?那么实例变量呢,它们和属性一样吗?我了解并非所有内存管理的责任都由我承担。
问问题
135 次
2 回答
0
基本上,编译器会为您添加保留和释放。当类释放时,它也会释放强引用。如果当时有一些代码需要运行而您不需要,实际上不能调用[super dealloc]
,您只需要编写一个 dealloc 方法,这是为您完成的。
但:
我知道局部变量在方法结束时自动设置为 nil。
是不正确的。我认为您可能会将此与弱引用混淆,当它们指向的实例被解除分配时,弱引用设置为 nil。
请注意,对象指针的局部变量在方法的开头设置为 nil。
于 2013-11-08T12:52:59.990 回答
0
强属性包括当您的对象引用它们时增加的引用计数,并且当您将它们设置为 nil(明确地,或者通过让您的对象准备好自动清理)时,它们的引用计数会减少。如果那时它们的引用计数为零,它们也可以被释放。
需要注意的是循环引用,比如对象A对对象B的强引用,而对象B对对象A的强引用。这是自动清理这些对象的问题。
于 2013-11-08T12:49:47.660 回答