解除UIAlertView时的崩溃
问题描述:
- 我正在使用ARC。
- 我在用户点击一个UITableView单元格后显示一个警告视图。
- 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
将被解除之前,委托不会被解除分配。
委托是UITable视图控制器,我检查了很多次。 – shannoga
@shannoga我明白这一点。这是由操作系统解除分配的UITableViewController。 UIAlertView的委托属性无疑是一个弱引用,因此ARC将允许在不再引用该视图控制器时取消分配。 – pdriegen
UIAlertView的代表不是一个弱引用,它是分配的。请参阅文档。在ReviewViewController dealloc方法中将代理设置为nil可能会解决崩溃问题。 – jbat100