首先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,可能腳本綁定會方便不少吧