MyPlatesViewController* viewController = [[MyPlatesViewController alloc] initWithNibName:@"MyPlates" bundle:nil ];
[self.view addSubview:viewController.view];
然后我删除了我的viewController
[self.view removeFromSuperview];
但泄漏仪器显示20 MB内存
有什么问题?
答案 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