2011-12-14 25 views
0

我們剛剛爲我們的Cocos 2D遊戲添加了遊戲套件。它工作正常,但會導致一些嚴重的內存泄漏。我已經在這個論壇上(和其他論壇上)讀過關於它的所有文章,但似乎沒有任何幫助。我們使用GKTapper的GameCenterManager。遊戲中心內存釋放(使用Cocos2D)

這是我們如何創建領導委員會,並顯示:

-(void)showLeaderBoard:(NSString *)lb withScore:(int)score 
{ 
GKLeaderboardViewController *leaderboardController = [[[GKLeaderboardViewController alloc] init] autorelease]; 

if (leaderboardController != nil){ 
gcVC = [[UIViewController alloc] init]; 
leaderboardController.category = lb; 
leaderboardController.timeScope = GKLeaderboardTimeScopeWeek; 
leaderboardController.leaderboardDelegate = self; 
[[[CCDirector sharedDirector] openGLView] addSubview: gcVC.view]; 
[gcVC presentModalViewController:leaderboardController animated:YES]; 
} 

} 

在這裏,它刪除:如果您在活動一下使用真正的紀念品

- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController 
{ 
[gcVC dismissModalViewControllerAnimated:YES]; 
[gcVC.view.superview removeFromSuperview]; 
[gcVC release]; 
} 

泄漏是顯而易見的監控。第一次顯示排行榜時,該應用程序的內存使用量增加了11.42MB,然後每次顯示並排除排行榜時增加了約0.3MB。此外,每當您在遊戲中心排行榜的「今日」,「本週」和「所有時間」之間瀏覽時,還會有另外0.2MB的空間被瀏覽。

回答

0

我相信代碼是舊的,並在cocos2d添加自己的RootViewController之前使用。這裏是我使用的代碼KKGameKitHelper

-(UIViewController*) getRootViewController 
{ 
    return (UIViewController*)((KKAppDelegate*)[UIApplication sharedApplication].delegate).rootViewController; 
} 

-(void) presentViewController:(UIViewController*)vc 
{ 
    UIViewController* rootVC = [self getRootViewController]; 
    [rootVC presentModalViewController:vc animated:YES]; 
} 

-(void) dismissModalViewController 
{ 
    UIViewController* rootVC = [self getRootViewController]; 
    [rootVC dismissModalViewControllerAnimated:YES]; 
} 

// Leaderboards 

-(void) showLeaderboard 
{ 
    if (isGameCenterAvailable == NO) 
     return; 

    GKLeaderboardViewController* leaderboardVC = [[[GKLeaderboardViewController alloc] init] autorelease]; 
    if (leaderboardVC != nil) 
    { 
     leaderboardVC.leaderboardDelegate = self; 
     [self presentViewController:leaderboardVC]; 
    } 
} 

-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController*)viewController 
{ 
    [self dismissModalViewController]; 
    if ([delegate respondsToSelector:@selector(onLeaderboardViewDismissed)]) 
    { 
     [delegate onLeaderboardViewDismissed]; 
    } 
} 
+0

這是Cocos2D還是Kobold2D?我從來沒有見過KKAppDelegate ......(使用Cocos2D 1.1)。 – 2011-12-18 12:36:47