UIAlert занимает несколько секунд, чтобы показать - PullRequest
6 голосов
/ 09 декабря 2011

У меня проблема с тем, что для показа всех UIAlertView в моем приложении требуется некоторое время.Дисплей мгновенно тускнеет, но для отображения фактического оповещения требуется около 5 секунд.

Я создаю их так:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title"
                                                    message:@"Message"
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles:nil];
[alertView show];
[alertView release];

У кого-нибудь было такое?Спасибо
–f

Ответы [ 2 ]

12 голосов
/ 09 декабря 2011

Если вы попытаетесь показать UIAlertView NOT из основного потока, вы увидите этот тип задержки (а иногда и более серьезные ошибки и сбои).

Извлеките код в виде отдельного метода и вызовите его с помощью «executeSelectorOnMainThread», или используйте GCD и отправьте его туда.

4 голосов
/ 09 декабря 2011

Что вы делаете после этого кода?Если вы сделаете какие-то вычисления и продолжите работать над вещами, предупреждение не будет отображаться.Он отображается только в конце цикла выполнения.Лучший способ справиться с этим - разделить работу на более мелкие куски, выполняя их один за другим, позволяя runloop обрабатывать события между ними.Или перенесите тяжелую работу в фоновый поток.

Если вы просто хотите попробовать, если это действительно проблема, с которой вы столкнулись, попробуйте добавить

 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];

чуть ниже кода выше.

...