首先Ref不用解釋。
cocos和常見的Ref或者智能指針稍微有點(diǎn)不一樣:
首先介紹傳統(tǒng)玩法:
傳統(tǒng)玩法Ref一般要配合RefPtr使用的,也就是new出來的Ref派生類引用計(jì)數(shù)為0,要放到一個(gè)RefPtr里邊來做生命周期管理。
在來看看cocos的玩法:
new出來Ref引用計(jì)數(shù)是為1的,那么問題來了,這樣如果Add和Release成對(duì)出現(xiàn)則Ref永遠(yuǎn)回不到0了。
cocos是這樣解決這個(gè)問題的:autorelease
調(diào)用autorelease,會(huì)把當(dāng)前Ref為1的對(duì)象壓入pool,然后在下一幀的調(diào)用release這樣就天下太平了,如果有add到其他節(jié)點(diǎn)上他就會(huì)變1,如果沒有就直接歸零析構(gòu)了
這樣就省掉了RefPtr操作
為了保持風(fēng)格統(tǒng)一,我也必須這樣玩,這樣的優(yōu)勢(shì)是不需要RefPtr,可能腳本綁定會(huì)方便不少吧