NSOperationQueue лаг на IOS4 - PullRequest
       9

NSOperationQueue лаг на IOS4

0 голосов
/ 14 ноября 2010

Я написал некоторый пример кода в отдельном приложении, которое в основном помещает в очередь элементы в NSMutableArray.Затем у меня есть метод, который проходит через этот массив и создает NSInvocationOperation, помещает его в NSOperationQueue, освобождает операцию и так далее.Затем вызывается метод (просто выводит строку, которая была сохранена в массиве и передана в операцию), выполняет свою работу и отправляет NSNotification обратно в ViewController.Метод наблюдателя получает удар, но операции имеют задержку.Например, метод наблюдателя просто обновляет UILabel количеством сообщений, оставшихся в очереди.Это в конечном итоге делает это, но, кажется, между завершением всех операций NSOperations и обновлением пользовательского интерфейса существует задержка в пять секунд.Мне кажется, что NSOperationQueue блокирует основной поток.Есть ли способ заставить интерфейс мгновенно реагировать на уведомления?

Одно важное замечание: я еще не проверял это на телефоне, только симулятор.Я не уверен, если это имеет значение.

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

1 Ответ

1 голос
/ 13 сентября 2012

Задержка типична для обновлений пользовательского интерфейса, которые выполняются в потоках, отличных от основного.

Чтобы мгновенно увидеть ваше обновление на UILabel, обязательно запустите любой метод обновления метки text следующим образом:

[self performSelectorOnMainThread:@(myMethodToUpdateLabelWithText:) withObject:text waitUntilDone:NO];

где myMethodToUpdateLabelWithText - это метод в вашем классе, который устанавливает текстовое значение метки.

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