我有一个UITableview。选择行时会弹出UIActionSheet。添加我使用的UIActionSheet
[actionSheet showFromRect:cell.bounds inView:cell animated:NO];
一切正常,我可以在UIActionView中选择项目,我可以在外面点击它消失。但是当它消失时(从外面敲击或选择一个项目)并快速点击其他内容,例如在后台,应用程序崩溃并显示以下消息:
-[UIActionSheet _dismissForTappedIndex:]: message sent to deallocated instance 0x173796d0
我猜应用程序需要关闭工作表,但它之前已经发布了吗?谢谢你的帮助。
答案 0 :(得分:1)
尝试保留对UIActionSheet的引用。例如,使它成为一个属性。此错误意味着ARC过快地释放对象.IF错误停止发生然后就是问题。
答案 1 :(得分:0)
如果您正在使用'clickedButtonAtIndex'委托方法来捕捉点击,在iOS8下我也遇到了崩溃,虽然在更改为didDismissButtonAtIndex时已修复。
我和UIAlertView有类似的崩溃,所以UIActionSheet也可能出现这种情况。
在iOS8下,请将您的委托方法clickedButtonAtIndex
更改为 didDismissWithButtonIndex
将此行更改为
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
用这个
- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex (NSInteger)buttonIndex {
您应该会发现这将解决崩溃。
我希望这会有所帮助。