ViewController被关在内存中

时间:2014-04-18 22:44:26

标签: ios memory-management uiviewcontroller presentviewcontroller

我使用以下代码在视图控制器之间切换..(工作正常)我也有很多视图控制器我不仅仅是在2之间来回切换

NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];

MyTableViewVC *detailView = (MyTableViewVC *)[storyboard instantiateViewControllerWithIdentifier:@"MyTableViewVC"];

    //pass data through to VC

[self presentViewController:detailView animated:NO completion:nil];

我在视图控制器之间转换时看到内存使用爬升

所以我做了一些研究,并意识到我不会解雇以前的视图控制器。我在调用[self dismissViewControllerAnimated:NO completion:nil];之前使用了以下代码presentViewcontroller:(之后我也尝试过使用它)并且它不起作用。如果我在没有任何反应之后使用它...在我收到以下警告之前使用它

主题1:EXC_BAD_ACCESS(代码= 1 ......等等,如果你需要剩下的话请告诉我

我也尝试过这样的事情......

[detailView presentViewController:detailView animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];

我做错了什么?

2 个答案:

答案 0 :(得分:0)

以下是从导航堆栈中删除VC的代码。

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];

// [navigationArray removeAllObjects];    // This is just for remove all view controller from navigation stack.
[navigationArray removeObjectAtIndex: 2];  // You can pass your index here
self.navigationController.viewControllers = navigationArray;
[navigationArray release];

但是请注意, 通过执行此操作,您将无法转到上一个VC,因为您从堆栈中删除了以前的VC。

当您抱怨内存 时,我会再次说出DOUBLE CHECK代码并调查内存的使用情况。如果不需要该对象,请释放该对象,以便不存在内存问题。

答案 1 :(得分:-1)

如果要返回到根视图控制器,则必须使用此代码。

[self.navigationController popToRootViewControllerAnimated:YES];