浅谈cocos2d之autorelease\retain\release的理解
demi 在 周三, 08/01/2018 - 09:33 提交
三种情况,引出问题:
(1) new出来的对象需要释放,而释放时,如果有其他人引用了这个对象,再次使用这个对象时,则会出现野指针情况。
==> 于是出现了引用计数的释放管理机制。
(2) 对于一个返回对象指针的方法,你若不看文档不看内部代码,你无法知道这个指针需不需要你来释放。同样的对于将一个指针或者对象作为参数给一个方法后, 你也无法知道这个方法会不会将你的对象释放掉。
==> 于是出现了谁拥有谁释放的管理思想。
(3)使用上述管理机制和思想后,有些特定情况。比如方法内新建一个对象,然后返回对象时,按照谁拥有谁释放的思想,对象是在方法内部创建的,方法退出前需要释放掉这个对象,但又要在退出时返回这个对象,先返回还是先释放都是不对的。
==> 于是出现了autorelease。
1、release和retain是配套的,释放管理是通过引用计数的。