在Objective-C的ARC下,我的内存管理责任是什么?

35 浏览
0 Comments

在Objective-C的ARC下,我的内存管理责任是什么?

这个问题已经有答案了

新的自动引用计数机制如何工作?

我理解在ARC中,您无需手动释放对象,因为它会自动完成。但是我的责任还有多少?我知道本地变量在方法结束时被自动设置为nil。但是强大的属性呢?我是否需要在像deallocviewDidUnload这样的方法中将它们设置为nil强大的属性是否会自动释放?实例变量呢?它们和属性一样吗?我明白并不是所有的内存管理责任都被我承担了。

admin 更改状态以发布 2023年5月21日
0
0 Comments

强引用属性包括一个引用计数,当您的对象对它们进行引用时,引用计数会增加,当您将它们设置为nil时(无论是显式地设置,还是通过准备自动清除您的对象),它们的引用计数会减少。如果此时它们的引用计数为零,它们也可以被释放。

需要注意的事情是循环引用,例如对象A对对象B有一个强引用,而对象B对对象A也有一个强引用。这对于这些对象的自动清除是一个问题。

0
0 Comments

基本上,编译器会为您添加保留和释放操作。当类dealloc时,它也会释放强引用。只有在这个时候需要运行一些代码,并且您不需要(事实上也不能)调用[super dealloc],才需要编写一个dealloc方法。

但是:

我知道局部变量在方法结束时会自动设置为nil。

这是错误的。我认为您可能会将其与弱引用混淆,当它们指向的实例被dealloc时,它们将被设置为nil。

请注意,对象指针的局部变量在方法开始时设置为nil。

0