这个小功能中的内存泄漏在哪里

时间:2010-01-30 16:13:02

标签: iphone memory-leaks

仪器说这个功能漏了。我是Obj-C的新手所以原谅我错过了一些明显的东西,除了我不确定我是否在这里做了一切。

(void) selectList:sender {
NSMutableString *nibName = @"myController";
MyOwnController *study = [[MyOwnController alloc] initWithNibName:nibName bundle:nil];
study.title = @"Fundamentals";
study.listNameToLoad = @"funds";
[self.navigationController pushViewController:study animated:YES];
[nibName release];
[study.title release];
[study.listNameToLoad release];
[study release];
study = nil;
}

相关问题。一旦你pushViewController,你应该总是在控制器上执行release,你刚推到堆栈上了吗?

1 个答案:

答案 0 :(得分:2)

您应首先阅读this

总之,您只有在创建或复制时才会发布。您已经发布了许多未创建/复制的变量,并且不负责发布。因此,您不应该发布nibName,study.title& study.listNameToLoad。

同样,您应该在控制器的dealloc方法中释放'title'和'listNameToLoad'属性。

至于您的相关问题,只有在您不再需要参考时才可以释放控制器。如果您确实选择保留引用,则需要在以后不再需要时释放引用。