无法弄清楚这个漏洞

时间:2010-07-22 16:27:35

标签: objective-c iphone memory-leaks

SettingsView *settings = [[SettingsView alloc] initWithNibName:@"SettingsView" bundle:[NSBundle mainBundle]];
settings.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self.navigationController presentModalViewController:settings animated:YES];
settings = nil;
[settings release];

仪器声称以下行正在泄漏

[self.navigationController presentModalViewController:settings animated:YES];

2 个答案:

答案 0 :(得分:15)

在将settings设置为nil之前,您需要先释放settings = nil; [nil release]; ,而不是之后!

您现在正在做的事情与:

相同
nil

因此,发送到SettingsView,而不是发送到nil对象。 (并向{{1}}发送任何消息是NOOP)。

答案 1 :(得分:0)

右。由于'settings'从未使用@property和@synthesize设置,因此将其设置为nil只会删除它所持有的内存地址。

如果你已经设置好了 @property (nonatomic, retain) SettingsView *settings;

然后再拨打settings = nil;

还会发送[settings release]消息。