我有一个B UIViewController,里面有一个关闭按钮。

        -(IBAction) close:(id) sender


从A视图控制器中,我像这样呈现B视图控制器

  [self presentViewController:B animated:YES completion:NULL];


然后一切正常,我可以按一下B里面的关闭按钮。

但是如果我这样做

   B* bcontrol=[[B alloc] init];
   [self.view addsubview bcontrol.view];


然后这样,如果我按下关闭按钮,它将生成EXEC_BAD_ACCESS错误。

这是为什么?有任何想法吗?

最佳答案

我认为您正在使用ARC。

您将bcontrol创建为局部变量,并且不保留对其的引用,因此ARC在删除其视图时将其释放。然后,您的按钮尝试在已释放的对象中触发动作...,其余的您便知道了。

使B成为一个强大的属性,以便它在您需要它的时候一直存在。

10-06 05:04