【发布时间】:2020-05-12 12:00:00
【问题描述】:
在iOS的MRC中,当一个对象设置为nil时,
myObject = nil;
被告知会发生内存泄漏,因为 myObject 不会指向内存地址。它之前指向的记忆将会丢失。所以我们需要释放myObject,然后我们才能设置nil。 有人可以帮助我理解,如果我们在 ARC 中将 nil 设置为 myObject 会发生什么? 如果我们有这样的事情
myObject = SomeObject(value:10);
SomeObject myObject_another = myObject;
myObject = nil;
- 当我们设置
myObject = nil时,ARC会调用[myObject release]吗? - 这会导致内存泄漏吗?
- 当我们设置
myObject = nil时,它也会调用[myObject_another release]吗?
请帮助我了解 ARC 和非 ARC 之间的区别。
【问题讨论】:
-
ARC自动管理发布周期,设置
myObject = nil时不会调用发布方法。这不叫内存泄漏。您不需要将所有对象都设置为 nil。每当类从堆栈中删除时,ARC 就会释放该类的所有分配内存。
标签: ios objective-c swift automatic-ref-counting manual-retain-release