What is my responsibility for memory management under ARC of Objective-C?
本问题已经有最佳答案,请猛点这里访问。
正如我在ARC中所理解的,您不需要手动释放对象,而是自动为您释放对象。但我还有多少责任?我知道在方法的末尾,局部变量被自动设置为
基本上,编译器会为您添加保留和发布。当类释放locs时,它也会释放强引用。如果当时有一些代码需要运行,而您不需要(实际上不能)调用
但是:
I know that local variables are being setted to nil automatically at
the end of the method.
是不正确的。我认为您可能会将其与弱引用混淆,当它们指向的实例被释放时,弱引用被设置为零。
注意,objet指针的局部变量在方法开始时设置为nil。
强属性包括一个引用计数,当您的对象引用它们时,该计数会增加;当您将它们设置为nil(显式地,或者通过让您的对象准备好自动清理)时,它们的引用计数会减少。如果此时它们的引用计数为零,则也可以解除分配。
需要注意的是循环引用,例如对象A对对象B具有强引用,而对象B对对象A具有强引用。这是自动清理这些对象的问题。