2013-03-21 84 views
0

這是一個有點簡單的問題,但我無法弄清楚。第二次同樣的CCScene被替換後遊戲崩潰

1->應用程序啓動(與MainMenu的場景)

2->開始(子水平場景被替換)

3->選擇第一級(Level1Scene被替換。遊戲開始。)

4->返回主菜單。 (MainMenu的場景被替換)

5->開始(子水平場景被替換)

6->選擇第一級

7->崩潰。

框(32842,0x3f5c9d98)malloc:*對象0x4bed44錯誤:釋放對象的校驗和不正確 - 對象可能在釋放後被修改。 *在malloc_error_break中設置一個斷點來調試

當我把場景a換成b時,是不是發佈了?

據我所知,只有pushScene在內存中保持場景。

+(CCScene *) scene { 

    CCScene *scene = [CCScene node]; 

    HelloWorldLayer *layer = [HelloWorldLayer node]; 

    [scene addChild: layer]; 

    return scene; 
} 

場景和圖層是autorelease對象。必須在調用replaceScene時釋放。 (如果在更換場景時先前的場景被釋放)。

+1

只有第一次使用pushScene,然後使用replaceScene - – Guru 2013-03-21 11:36:21

+0

我仍然有同樣的問題。當我回到MainMenu場景時,Level1Scene必須被釋放。爲什麼我得到 malloc:***對象0x4da934錯誤:不正確的校驗和對於釋放的對象 - 對象可能在釋放後被修改。 ***第二次更換遊戲場景時,在malloc_error_break中設置斷點以調試 ? – Quaso 2013-03-22 07:59:15

回答

0

我已經解決了這個問題。它的奇怪,但工程。

我有一個CCSprite的子類叫做Collectable的類。第二次更換具有可收集對象的場景時,它會崩潰。我現在將其轉換爲CCNode及其作品。

也許它可以幫助別人。