我有一個問題,真的做我的頭的Xcode工具 - 無法找到泄漏
所以基本上我有一個MainMenuScene,這反過來創建一個測試層。該圖層非常簡單,因爲它只創建一個分數標籤和一個添加到菜單中的按鈕。 按下此按鈕後,MainMenuScene將被替換爲空白場景,然後再次加載MainMenuScene。
到目前爲止這麼好。然而,問題是每次重新加載場景時,我都會在樂器中堆積一堆,我會得到大約20kb的堆積。當我在擴展視圖中深入挖掘時,似乎來自testLayer的精靈和字體沒有被釋放,但圖層中的dealloc方法正在被調用。
除了核心Cocos文件外,我還爲我的文件添加了ARC支持。這可以以任何方式相關嗎?
下面是測試層:
@implementation TestLayer
-(id)init
{
self = [super initWithColor:ccc4(2,2,2,210)];
if (self != nil)
{
// ask director the the window size
CGSize s = [[CCDirector sharedDirector] winSize];
self.isTouchEnabled = YES;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber * n = [NSNumber numberWithInt:[SDCloudUserDefaults integerForKey:@"highscore"]];
NSString *string = [formatter stringFromNumber:n];
//score
CCLabelBMFont * scoreLabel = [CCLabelBMFont labelWithString:string fntFile:@"scoreFont.fnt" width:s.width alignment:kCCTextAlignmentCenter];
scoreLabel.position = ccp(POS_X(443), POS_Y(877));
[self addChild:scoreLabel z:90];
//PLAY BUTTON
CCMenuItemSprite *playButton = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithFile:@"play_up.png"]
selectedSprite:[CCSprite spriteWithFile:@"play_down.png"]
target:self
selector:@selector(Transition:)];
playButton.position = ccp(POS_X(380) , POS_Y(177));
menu = [CCMenu menuWithItems: playButton, nil];
menu.position = ccp(0, 0);
[self addChild: menu];
}
return self;
}
-(void) Transition:(ccTime) dt
{
[self unschedule:@selector(Transition:)];
[[SceneManager sharedSceneManager]RunSceneWithID:SCENE_LOADING:eCCTransitionCrossFade:1.0f];
}
- (void) dealloc
{
NSLog(@"%s",__FUNCTION__);
}
@end
我實在看不出有什麼錯。
感謝
什麼是提示您的優化?你是否遇到了內存崩潰? 20K的堆積鏡頭差異聽起來對我來說聽起來不是很多。這只是預先優化?我可以理解,它讓你困惑,記憶力正在增長。它也會打擾我,但這是一個問題嗎? – 2013-02-13 03:07:51
@Matt長的尺寸只有20kb,因爲它是一個小測試層。如果我使用原始圖層,泄漏量約爲400kb :( – 2013-02-13 15:56:43