如何正确删除View Controller?

时间:2010-12-10 18:55:15

标签: iphone uiviewcontroller

MyPlatesViewController* viewController = [[MyPlatesViewController alloc] initWithNibName:@"MyPlates" bundle:nil ];
[self.view addSubview:viewController.view];

然后我删除了我的viewController

[self.view removeFromSuperview];

但泄漏仪器显示20 MB内存

有什么问题?

2 个答案:

答案 0 :(得分:1)

您泄露了视图控制器对象。从超级视图中删除视图后,您还需要释放控制器。

或者,您可以执行以下操作:

[self presentModalViewController:viewController animated:NO];
[viewController release];

然后,当调用dismissModalViewController时,视图和视图控制器都将被正确释放。

答案 1 :(得分:0)

您致电alloc,因此您有责任将其发布。您的代码应如下所示:

MyPlatesViewController* viewController = [[MyPlatesViewController alloc] initWithNibName:@"MyPlates" bundle:nil ];
[self.view addSubview:viewController.view];
[viewController release]

请注意,当您调用addSubview时,视图会保留您的控制器,并在调用removeFromSuperview时释放。因此,使用当前代码,在调用removeFromSuperview后,viewController的保留计数仍为1。

此外,你应该在这里查看objective-c记忆力:http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html