当用户单击按钮时,它会显示一个带有两个视图控制器的新标签栏视图控制器。我就是这样做的
ACLevelDownloadController *dvc = [[ACLevelDownloadController alloc] initWithNibName:@"ACLevelDownloadController" bundle:[NSBundle mainBundle]];
ACInstalledLevelsController *ivc = [[ACInstalledLevelsController alloc] initWithNibName:@"ACInstalledLevelsController" bundle:[NSBundle mainBundle]];
UITabBarController *control = [[UITabBarController alloc] init];
control.viewControllers = @[dvc, ivc];
dvc.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFeatured tag:0];
ivc.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
[self presentViewController:control animated:YES completion:nil];
这很好用。我在dismiss
和ACLevelDownloadController
中使用ACInstalledLevelsController
方法关闭了该视图控制器。这也很好。奇怪的是,当我呈现视图控制器时,内存使用率会上升
但它永远不会失败。如果我再次呈现它,它会更上升 我正在使用ARC。为什么视图控制器使用的内存在被解除后不被释放?
他们被解雇的方式是ACLevelDownloadController
和ACInstalledLevelsController
连接了IBActions,点击它们时会调用此方法
- (void)dismiss:(id)sender{
[self dismissViewControllerAnimated:YES completion:nil];
}
答案 0 :(得分:3)
我们可以从内存使用情况图中看到,tabViewController没有被正确解散并且在堆栈中构建。虽然解雇你必须允许提供tabViewController的viewController解雇它。解雇是他的责任。同时保留Outlets的弱引用,并在 viewWillDisapper:中为nil **指定任何强引用。您可以以模态方式呈现viewController作为临时中断,以从用户获取重要信息。如果不是这里的情况,您可以删除模态呈现。检查此link。希望这会有所帮助:)