我遇到一个问题,我的应用中的所有UIAlertView
都需要花费相当长的时间才能显示出来。显示屏立即变暗,但实际警报需要显示5秒钟。
我正在创建它们:
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title"
message:@"Message"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
[alertView release];
有人有这个吗?
感谢
-f
答案 0 :(得分:12)
如果你试图从主线程中显示UIAlertView NOT,你可以看到这种类型的延迟(有时,更严重的错误和崩溃)。
将代码作为单独的方法提取并使用“performSelectorOnMainThread”调用它,或者使用GCD并在那里调度它。
答案 1 :(得分:4)
那段代码后你在做什么?如果您进行一些计算并继续处理事情,则不会显示警报。它仅显示在runloop的末尾。处理此问题的最佳方法是将工作拆分为较小的块,一个接一个地执行,同时让runloop处理事件。或者将重物卸载到后台线程。
如果你想尝试什么,如果这确实是你遇到的问题,请尝试添加
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];
就在上面的代码之下。