对cocos2d 之autorelease\ratain\release的理解
发布时间:2020-12-14 14:17:27 所属栏目:百科 来源:网络整理
导读:Objective C内存管理进阶(二):理解autorelease: http://www.cnblogs.com/MobileDevelop/archive/2010/07/19/1779138.html 看了上面博客中对autorelease的见解,对autorelease有了更深入的了解。但是还不是很理解,于是又看了代码。一开始对autorelease的
Objective C内存管理进阶(二):理解autorelease:
http://www.cnblogs.com/MobileDevelop/archive/2010/07/19/1779138.html
看了上面博客中对autorelease的见解,对autorelease有了更深入的了解。但是还不是很理解,于是又看了代码。一开始对autorelease的“自动释放”的印象总是挥之不去。总是往java那样的完全自动释放那方面靠,于是第一感觉就错了。
以下仅针对 cocos2dx分析。
前言:
三种情况,引出问题
1、release 和retain是配套的,释放管理是通过引用计数。
2、release和retain的使用的指导思想是,谁拥有谁施放。
------------------------------------------------------
void class IhaveObjHandler()
{
public:
}
void dispatchObjX(){
}
------------------------------------------------------
示例中:需要释放管理的对象是
ObjX
位置1:因为obj新建时引用计数为1,而我(
dispatchObjX方法
)是不需要ObjX对象的,所以当我把他传给
IhaveObjHandler
位置2:IhaveObjHandler
里需要保存
ObjX的引用,
于是我(
IhaveObjHandler类
)调用retain()。当我不需要他,想要把他释放的时候调用release().
在释放的时候,注意自己retain几次,只能释放几次,不能过多释放。
3、autoreleas是一个特殊的release,即延后释放。
------------------------------------------------------
ObjX* create
ObjX(){
}
4、autoRelease实现原理的小细节
5、 使用autorelease的好处
6、其实autorelease并没有那么好用
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |