From bbe409f5e34b5269ecbb7f61dbb8a793e2871d20 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Mon, 5 Sep 2011 13:03:27 -0400 Subject: Made general memory fixes This revision should also hopefully fix the undefined behavior GameOverScene bug--if it, I'll reopen the ticket and continue investigating. Fixes #215 --- Classes/GameOverScene.m | 6 ++++++ Classes/Highscore.m | 2 +- Classes/HighscoreListController.m | 10 +++++++--- Classes/JumpGameMode.m | 12 +++++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Classes/GameOverScene.m b/Classes/GameOverScene.m index 28c59ec..cfbb446 100755 --- a/Classes/GameOverScene.m +++ b/Classes/GameOverScene.m @@ -184,20 +184,26 @@ [submitSwitch removeFromSuperview]; [submitSwitch release]; + submitSwitch = nil; [textField removeFromSuperview]; [textField release]; + textField = nil; [scoreField removeFromSuperview]; [scoreField release]; + scoreField = nil; [activityIndicator removeFromSuperview]; [activityIndicator release]; + activityIndicator = nil; [backButton removeFromSuperview]; + backButton = nil; [movingLayer removeFromSuperview]; [movingLayer release]; + movingLayer = nil; [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; } diff --git a/Classes/Highscore.m b/Classes/Highscore.m index 546cbfe..e459d48 100755 --- a/Classes/Highscore.m +++ b/Classes/Highscore.m @@ -50,7 +50,7 @@ } } - return [highscores copy]; + return [[highscores copy] autorelease]; } + (Highscore*)localHighscoreForGameMode:(NSString*)gameMode diff --git a/Classes/HighscoreListController.m b/Classes/HighscoreListController.m index 7dbefa1..7370da5 100755 --- a/Classes/HighscoreListController.m +++ b/Classes/HighscoreListController.m @@ -22,7 +22,7 @@ // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. self = [super initWithStyle:style]; if (self) { - localHighscores = [Highscore localHighscoreListForGameMode:@"Collect"]; + localHighscores = [[Highscore localHighscoreListForGameMode:@"Collect"] retain]; navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; myNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Highscores"]; @@ -48,6 +48,7 @@ toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 480-44, 320, 44)]; [toolbar setItems:[NSArray arrayWithObjects:barButton3, btnSpace, barButton2, nil] animated:NO]; [barButton2 release]; + [btnSpace release]; [barButton3 release]; showGlobal = NO; @@ -326,13 +327,16 @@ - (void)switchGameMode:(id)sender { + [localHighscores release]; + if ([(UISegmentedControl*)sender selectedSegmentIndex] == 0) { - localHighscores = [Highscore localHighscoreListForGameMode:@"Collect"]; + localHighscores = [[Highscore localHighscoreListForGameMode:@"Collect"] retain]; } else { - localHighscores = [Highscore localHighscoreListForGameMode:@"Jump"]; + localHighscores = [[Highscore localHighscoreListForGameMode:@"Jump"] retain]; } + [globalHighscores release]; globalHighscores = nil; [self switchLists:areaControl]; diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index 907effc..7299160 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m @@ -56,16 +56,20 @@ factory = [[LedgeFactory alloc] init]; ledges = [[NSMutableSet alloc] init]; - CCSprite* ledge = [CCSprite spriteWithTexture:[[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:6 height:2]]]; + CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:6 height:2]]; + CCSprite* ledge = [CCSprite spriteWithTexture:texture]; ledge.position = ccp(80, 32); [self addChild:ledge]; [ledges addObject:ledge]; + [texture release]; CCSprite* firstLedge = ledge; - ledge = [CCSprite spriteWithTexture:[[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:10 height:2]]]; + texture = [[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:10 height:2]]; + ledge = [CCSprite spriteWithTexture:texture]; ledge.position = ccp(80 + firstLedge.boundingBox.size.width/2 + ledge.boundingBox.size.width/2+64, 32); [self addChild:ledge]; [ledges addObject:ledge]; + [texture release]; ledgeScrollSpeed = 0; ledgeAccelerationRate = 20.0f; @@ -125,10 +129,12 @@ if (rightmost <= 480) { - CCSprite* ledge = [CCSprite spriteWithTexture:[[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:(arc4random() % 10) height:2]]]; + CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:[factory createLedgeWithWidth:(arc4random() % 10) height:2]]; + CCSprite* ledge = [CCSprite spriteWithTexture:texture]; ledge.position = ccp(rightmost + rightwidth + ledge.boundingBox.size.width/2+64, 32); [self addChild:ledge]; [ledges addObject:ledge]; + [texture release]; } if ([self cartIsObstructed:cart]) -- cgit 1.4.1