解除UIAlertView时的崩溃

问题描述:

  1. 我正在使用ARC。
  2. 我在用户点击一个UITableView单元格后显示一个警告视图。
  3. 99%的时间一切正常。

现在到了WEIRED PART解除UIAlertView时的崩溃

我有这种说法层次 -

的UITableView - >第一的UIViewController - >儿童UIViewControllerControllers

崩溃只出现后我打开一个,具体的孩子UIViewControllers。在我输入所有其他子视图控制器后,警报视图很好。如果我即使输入一次“有问题”的视图控制器,甚至5分钟后UIAlert视图也会崩溃,即使我进入了所有其他视图控制器。

我不得不再次说alertView是在根UITableView中呈现的。即使警报视图回调方法只有NSLoging,它也会崩溃。

崩溃报告:

*** -[ReviewViewController isKindOfClass:]: message sent to deallocated instance 0x20bea8d0 

而 'ReviewViewController' 是有问题的viewController。

感谢

沙尼

你的UIAlertview的委托设置为呼叫UIViewController。在某些情况下,当你离开它时,UIViewController正在被解除分配。

如果您需要委托人对UIAlertView作出响应,则必须构建代码,以便在UIAlertView将被解除之前,委托不会被解除分配。

+0

委托是UITable视图控制器,我检查了很多次。 – shannoga

+0

@shannoga我明白这一点。这是由操作系统解除分配的UITableViewController。 UIAlertView的委托属性无疑是一个弱引用,因此ARC将允许在不再引用该视图控制器时取消分配。 – pdriegen

+1

UIAlertView的代表不是一个弱引用,它是分配的。请参阅文档。在ReviewViewController dealloc方法中将代理设置为nil可能会解决崩溃问题。 – jbat100