我剛剛將一個cocos2d v1.x項目遷移到了v2.x,並且一切似乎都沒有問題。然後我打開了ARC。但現在,CCLayer的一個dealloc永遠不會被調用。在轉換過程中,該方法中的大部分內容都消失了,但只需要留下一個CCLog來指示圖層何時解除分配。我不確定從無弧到弧有什麼問題。各種消息來源提到,必須有其他的東西保留它。這很奇怪,因爲它釋放了所有這些變化。我還沒有完成特定的代碼(該層有很多代碼)。但只是想看看有沒有關於cocos2d v2.x + ARC的常見錯誤。cocos2d v2.x打開arc後,cclayer沒有得到dealloc
1
A
回答
1
剛解決這個問題。爲什麼cclayer得到了保留在ARC情況下(貌似好轉換後),但之前不就是我宣佈實例變量
@interface SomeObject {
CCNode *_parent;
}
和我沒有爲它定義一個@property的原因。
我在實現中的某處做了一個任務。在沒有ARC的情況下似乎沒有問題,因爲在_parent上可能沒有任何保留。但在ARC之後,似乎_parent現在是一個強大的參考。這是造成親子風格的循環引用。我認爲一個解決辦法是使其成爲一個不安全的未保存的。但我沒有打擾,因爲它是一些舊的代碼,我實際上忘記了註釋。我擺脫了這個伊娃。我認爲這可能是第一次嘗試轉換爲ARC時的一個陷阱。它也意味着不使用@property聲明一個ivar並不是一個好習慣,當你轉換舊項目時可以咬這個東西。
相關問題
- 1. 將CCLayer添加到另一個CCLayer中cocos2d-x
- 2. Cocos2d 2.x,1.x和ARC
- 3. 沒有ARC的WatchKit導致dealloc崩潰
- 4. 將CCPhysicsSprite添加到CCLayer cocos2d
- 5. Dealloc和ARC
- 6. 打開ARC後UITableViewCell.contentView錯誤
- 7. cocos2d中的UIScrollview CCLayer
- 8. cocos2D CCLayer或CCLayerColor setOpacity
- 9. Cocos2d CCScene&CCLayer設置
- 10. cocos2d場景dealloc
- 11. Cocos2d v2 + Chipmunk:向CCLayer添加形狀時失敗
- 12. Cocos2d 2.x設備上的ARC問題
- 13. 使用Cocos2d-x打開Game Center UI
- 14. 從C++ CCScene打開CCScene在cocos2d-x
- 15. UIPopoverController內存沒有得到釋放後關閉ARC
- 16. CCLayer的cocos2d模態窗口
- 17. 爲什麼在ARC打開項目時dealloc沒有被調用,但是關閉了某個文件目標c?
- 18. 我創建了一個沒有ARC的新項目,但沒有dealloc方法
- 19. 如何在Cocos2d-x中設置CCLayer大小?
- 20. cocos2d-x cclayer dosent在多層中處理我的觸摸
- 21. 有條件的alloc/dealloc? [Objective-c and Cocos2D]
- 22. 從Cocos2d翻譯到Cocos2d-X
- 23. cocos2d dealloc的場景從來沒有被調用replaceScene
- 24. cocos2d ios應用程序崩潰沒有錯誤 - 意外dealloc
- 25. 狗頭人/ Cocos2D - 應用程序在最小化後重新打開後變得沒有響應
- 26. Cocos2d:從另一個CCLayer(父母?)調用函數CCLayer
- 27. 沒有做的dealloc
- 28. XCode 4.2和ARC,爲什麼它沒有打開我?
- 29. Android上的Cocos2D-X沒有運行
- 30. objective-c對象沒有得到dealloc:編輯
相關代碼在哪裏? – LearnCocos2D 2013-04-29 07:52:03
我已經通過定義'OnExit()'和'OnEnter()'方法而不是分別在它們內部調用'[super onExit]'和'[super onEnter]'來燒燬。但除此之外,我們需要一些代碼。 – 2013-04-29 16:01:50
謝謝。我也檢查過這些。 – kawingkelvin 2013-04-29 16:10:39