UIViewController завис во время обновления - PullRequest
0 голосов
/ 15 октября 2010

мой основной UIViewController должен проверять наличие некоторых обновлений данных при загрузке, если обнаруживается какое-либо обновление, добавляется непрозрачное подпредставление для отображения прогресса и т. Д.

Скажем, метод называется checkUpdates, поэтому в моем делегате приложения я делаю следующее:

[window addSubview:viewController.view];
[window makeKeyAndVisible];

[viewController checkUpdates];

Метод похож на

- (void) checkUpdates {
    // add the opaque progress view
    [self.view addSubview:progress.view];
    [progress setMessage: @"Checking for updates ..."];

    // ... perform the update ...

    // remote the progress view
    [progress.view removeFromSuperview];
}

Теоретически представление должно загружаться и должен быть виден процесс обновления, но проблема в том, что представление просто зависает на этом этапе, и когда процесс обновления завершается, я могу взаимодействовать с ним.

Есть идеи?

1 Ответ

0 голосов
/ 15 октября 2010

Поскольку пользовательский интерфейс запускается в основном потоке приложения, если вы выполняете «рабочие» задачи в основном потоке, вы также заблокируете пользовательский интерфейс, который поэтому будет выглядеть замороженным.

Возможно, вы захотитерассмотрите возможность использования NSOperationQueue или чего-то эквивалентного для выделения другого потока для выполнения своей работы, чтобы пользовательский интерфейс мог продолжать обрабатывать обновления независимо.

...