更多泄漏代码有帮助吗?

时间:2010-02-04 21:27:19

标签: iphone xcode memory sdk memory-leaks

-(IBAction)customizeYourGameButtonClicked:(id)sender {
 [self playHumanHitSound];

 self.customizeYourGameViewController = [[CustomizeYourGameViewController alloc]
    initWithNibName:@"CustomizeYourGameViewController" bundle:nil];

 [self.navigationController
     pushViewController:customizeYourGameViewController animated:YES];
 [customizeYourGameViewController release];
}

无法理解为什么会泄漏。我将customizeYourGameViewController设置为属性并合成它。

2 个答案:

答案 0 :(得分:3)

看来customizeYourGameViewController是您班级的财产。它会保留吗?如果是这样,customYourGameViewController的@synthesized setter正在进行保留​​,你需要在某个地方发布。

虽然,考虑到这一点,我想知道:为什么customizeYourGameViewController属性?除非你在其他地方与控制器通信,否则它应该只是一个局部变量。

-(IBAction)customizeYourGameButtonClicked:(id)sender {
 [self playHumanHitSound];

 id customizeYourGameViewController = [[CustomizeYourGameViewController alloc]
    initWithNibName:@"CustomizeYourGameViewController" bundle:nil];

 [self.navigationController
     pushViewController:customizeYourGameViewController animated:YES];
 [customizeYourGameViewController release];
}

然后移除ivar并移除属性。

答案 1 :(得分:0)

您正在分配CustomizeYourGameViewController但未发布它。进行以下更改。

[[[CustomizeYourGameViewController alloc] nitWithNibName:@"CustomizeYourGameViewController" bundle:nil] autorelease];

你可以摆脱最后的

[customizeYourGameViewController release];

我不确定它在做什么(你有一个名为customizeYourGameViewController的iVar),但它可能没有做你认为它正在做的事情。