首先Ref不用解释。
cocos和常见的Ref或者智能指针稍微有点不一样:
首先介绍传统玩法:
传统玩法Ref一般要配合RefPtr使用的,也就是new出来的Ref派生类引用计数为0,要放到一个RefPtr里边来做生命周期管理。
在来看看cocos的玩法:
new出来Ref引用计数是为1的,那么问题来了,这样如果Add和Release成对出现则Ref永远回不到0了。
cocos是这样解决这个问题的:autorelease
调用autorelease,会把当前Ref为1的对象压入pool,然后在下一帧的调用release这样就天下太平了,如果有add到其他节点上他就会变1,如果没有就直接归零析构了
这样就省掉了RefPtr操作
为了保持风格统一,我也必须这样玩,这样的优势是不需要RefPtr,可能脚本绑定会方便不少吧