-1

正如我在 ARC 中所了解的,您不需要手动释放对象,它会自动为您完成。但有多少责任还是我的?我知道局部变量nil在方法结束时被自动设置为。但是强大的属性呢?我是否必须将它们设置为nildeallocviewDidUnload的方法?强属性会自动释放吗?那么实例变量呢,它们和属性一样吗?我了解并非所有内存管理的责任都由我承担。

4

2 回答 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 回答