Objective c 从SuperView移除时的EXC_错误访问-使用ARC

Objective c 从SuperView移除时的EXC_错误访问-使用ARC,objective-c,ios,uiviewcontroller,Objective C,Ios,Uiviewcontroller,在我的一个ViewController(ViewController A)中,我有以下代码: AlertViewController *aViewController = [[AlertViewController alloc] initWithNibName:@"AlertViewController" bundle:nil]; [self.view addSubview:[aViewController view]]; [self.view bringSubviewToFront:[aVie

在我的一个ViewController(ViewController A)中,我有以下代码:

AlertViewController *aViewController = [[AlertViewController alloc] initWithNibName:@"AlertViewController" bundle:nil];
[self.view addSubview:[aViewController view]];
[self.view bringSubviewToFront:[aViewController view]];
在AlertViewController中,我有一个按钮,当用户单击它时,我有:

[self.view removeFromSuperview];
每当我点击按钮,结果是EXC\u BAD\u访问。
我想不出这个问题。我的项目正在使用ARC,如果该信息有用,ViewController A是导航控制器堆栈的一部分

这里的问题是UIView没有自己的UIViewController。在第一段代码中,您通过将UIView添加到子视图来保持UIView,但让UIViewController消失。UIViewController中的UIView是特殊的,不能让这种情况发生


确保创建UIView的UIViewController与视图的寿命一样长。

您不能从其superview中删除
self.view
。你想隐藏什么视图?@Rickay我想在AlertViewController的窗口中隐藏整个视图。如果你想隐藏视图,那么只需使用
self.view.hidden=YES
,但老实说,如果隐藏视图控制器的视图会显示其下方的内容,您没有正确使用视图控制器。通常,您会将视图控制器作为子对象添加到所属VC中<代码>[self-addChildViewController:aViewController]我把aViewController作为一个ivar,这样我就可以保留它了。现在可以了。