Я написал несколько примеров кода в отдельном приложении, которое в основном ставит в очередь элементы в NSMutableArray. Затем у меня есть метод, который проходит через этот массив и создает NSInvocationOperation, помещает его в NSOperationQueue, освобождает операцию и т. Д. Затем метод вызывается (просто печатает строку, которая была сохранена в массиве и передана в операцию), выполняет ли это задание и отправляет NSNotification обратно в ViewController. Метод наблюдателя получает удар, но операции имеют отставание от них. Например, метод наблюдателя просто обновляет UILabel, сколько сообщений осталось в очереди. В конечном итоге это происходит, но, похоже, существует пять секунд отставания от всех завершений NSOperations и обновления пользовательского интерфейса. Мне кажется, что NSOperationQueue блокирует основной поток. В любом случае, чтобы пользовательский интерфейс немедленно ответил на уведомления?NSOperationQueue lag on IOS4
Важно отметить, что я еще не тестировал это на телефоне, просто симулятор. Я не уверен, что это имеет значение.
Извините заранее. Я далеко от компьютера, и у меня нет кода передо мной. Надеюсь, я объяснил это достаточно хорошо. Также я прочитал документацию, просто не нашел ничего, что действительно отвечает на этот конкретный вопрос для меня.
Это может быть не очень важно, но в какой поток вы публикуете уведомления? По умолчанию уведомления, отправленные с центром уведомлений по умолчанию, принимаются в потоке, на котором они отправляются. – warrenm
Ну, это может иметь смысл, потому что ViewController получает уведомления, поэтому я предполагаю, что NSOperationQueue работает в одном потоке, поскольку он отправляет уведомления. – iosnewbie
Так, например, - (void) messagePosted: (NSNotification *) note {lblMessage.text = "Привет";} получает удар, но текст lblMessage на самом деле не меняется на «Привет» в течение нескольких секунд после операций в очереди были завершены. – iosnewbie