究竟是dealloc
方法的Cocos2D
場景調用? 正確加載另一個場景?或者在場景加載完成後?
此外,如果我打算覆蓋它,那麼必須在dealloc方法中?
顯然,cocos2D
自動刪除場景解除分配時連接到場景的所有節點。但是,如果我打算覆蓋它,特別是我必須調用哪些方法? 那麼,如何管理我的場景以確保它們無泄漏,100%? 在此先感謝!Cocos2D場景釋放
4
A
回答
1
CCScene的釋放器遵循與任何其他對象相同的規則。它將在CCScene的引用計數達到零時運行。
默認情況下,場景不關心另一個即將取代它的場景,但如果您正在使用過渡更改場景,則會有一段時間同時存在兩個場景。當過渡結束時,過渡將釋放它對第一個場景的引用,這可能是最後一個這樣的引用,並且第一場景將被釋放。
在您的場景釋放器中,放置一個CCLOG以查看它的運行時間。我把每一個都確定下來。
通常,手動發佈您使用從alloc
,new
或copy
開始的方法創建的任何對象,無論它是否爲Cocos2D對象或其他。其他創建方法(例如Cocos2D的node
)不需要手動釋放,除非您自己也手動選擇了retain
對象,如果您不打算將它作爲子節點直接添加到另一個節點,這可能是明智的。如你所說,將一個節點作爲孩子添加到另一個並不意味着它需要額外的release
; Cocos2D將處理那個。
1
您在場景類中分配的每個對象都沒有作爲子項添加到場景中,必須顯式釋放。
當您用另一個場景對象替換它(使用replaceScene
方法)或從場景堆棧中彈出場景時,會釋放一個場景(並且大部分時間將其釋放,如果您沒有將其保留在其他場景中)。
總是建議查看源代碼(其中包含非常有用的註釋),並瞭解如果您自定義場景類別時應完成的操作。
相關問題
- 1. Cocos2d replaceScene不釋放舊場景
- 2. Cocos2d不再釋放現場
- 3. UIViewController以奇怪的方式釋放我的Cocos2d場景
- 4. cocos2d場景dealloc
- 5. SpriteKit場景不被釋放
- 6. 更改場景cocos2d
- 7. Cocos2d關閉場景
- 8. cocos2D釋放CCScheduler
- 9. UIViewController中的cocos2d場景
- 10. cocos2d場景vs圖層
- 11. 清除UIWindow cocos2d場景
- 12. Cocos2d如何切換場景
- 13. Cocos2D-JS場景轉換
- 14. cocos2d場景保留問題
- 15. cocos2d 2.x場景retainCount
- 16. 在cocos2D場景中推ViewController
- 17. cocos2d不能改變場景?
- 18. iPhone Cocos2d加載場景
- 19. Cocos2d遊戲兩個場景之間的替換場景
- 20. 將變量從一個場景傳遞到其他場景 - Cocos2D
- 21. 如何從另一個場景popScene特定的Cocos2D場景?
- 22. 我可以在移動到另一個場景之前釋放場景嗎?
- 23. Cocos2d不釋放內存
- 24. 無法釋放UIView在cocos2d
- 25. 開放場景圖
- 26. 頁面從cocos2d場景導航到Uiviewcontroller
- 27. Cocos2d:替換的場景仍然有效
- 28. 刷新cocos2d的遊戲場景
- 29. 的Cocos2D,UIScrollView的,以及場景
- 30. Cocos2d場景切換和替換問題
哦......我想我現在明白了!不過,現在我擁有一個擁有cocos2D節點的對象的場景。每次我「刷新」它時,我都會使用init。這是否意味着我在泄漏記憶? (我只在dealloc方法中釋放一次,再次感謝! – wayway
道歉,你是對的,它是導致保留計數被實現的alloc,而不是init - 但它們通常一起使用。在init中執行 - 通常會在init中創建其他對象,因此如果在再次調用init之前沒有釋放這些對象,則可能會遇到問題。 –