我在Cocos2d中有一個iPhone應用程序,由於內存問題,它有時會在實際設備上崩潰。在Cocos2d iPhone應用程序中未完全發佈的場景 - 調試
我迄今發現的是,場景,切換時,沒有完全釋放 - 在[retainCount]
對他們來說是有點4-10 :)
的dealloc
方法不會被調用,然後我假設,當我切換場景幾次時,內存問題就會出現。
我想知道 - 我應該在哪裏放鬆現場?既然它有多少個孩子,我想我應該對他們進行清理。但事實證明,從圖層中移除所有的孩子並不會減少它的保留數量。我加了這樣一段代碼到我的cleanup
方法:
- (void) cleanup {
while ([self.children count] > 0) {
CCLOG(@"child: %d - %@ rc: %d", 0, [self.children objectAtIndex:0], [[self.children objectAtIndex:0] retainCount]);
[self removeChild:[self.children objectAtIndex:0] cleanup:YES];
}
[super cleanup];
}
但隨後[self retainCount]
方法仍然返回的數則1或0,和我的dealloc
不會被調用。
爲了正確地釋放這些孩子,我應該做些什麼?如果我將自己的子類CCSprite
作爲子項添加,那麼我應該在該類中執行一些具體的操作嗎?release
或dealloc
方法,那麼只需調用它的[super]
方法?