iOS 8 alertview:willDismissWithButtonIndex VS didDismissWithButtonIndex

时间:2014-08-03 12:00:09

标签: objective-c ios7 cocos2d-iphone uialertview ios8

在iOS 8设备上运行为iOS 7.1构建的应用时,我遇到了一些崩溃。

经过一项小规模的研究后,我发现它是由于企图解雇已经被解雇的元素而导致以下错误:

正在进行演示或解雇时,尝试从视图控制器中解除!

毋庸置疑,以前的迁移并没有发生这种情况。 我追溯到了

(void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex

并改为应用

(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

似乎解决了崩溃问题

我正在使用willDismiss ...委托来通知尝试退出当前阶段并很快关闭阶段。

我的问题是,如果这两者之间在我目前的使用方面存在重大差异,那么通过在这两者之间切换可能会产生什么后果?

我正在使用cocos2d v1.1.0-beta2b

1 个答案:

答案 0 :(得分:0)

对我而言,Attempt to dismiss from view controller while a presentation or dismiss is in progress!似乎很清楚。在另一个在场或解雇期间正在致电-dismissViewControllerAnimated:completion:

以下是UIAlertViewDelegate的文档:

-alertView:willDismissWithButtonIndex:

  

在取消警报视图之前发送给代理人。

-alertView:didDismissWithButtonIndex:

  

从屏幕上取消警报视图后发送给代理人。

使用-alertView:willDismissWithButtonIndex:时,如果您呈现或关闭视图控制器,则可能会踩到UIAlertView视图控制器的关闭,从而产生错误。

使用-alertView:didDismissWithButtonIndex:时,如果您呈现或关闭视图控制器,则表示您没有此错误:UIAlertView的视图控制器已被解除。