Моему приложению нужно выполнить некоторую операцию, связанную с Интернетом, а затем просмотреть этот вид, когда я отправлю приложение на задний план. А затем контроллер корневого представления извлекает некоторые данные и обновляет представление коллекции. Есть ли у вас какие-либо идеи, как я могу решить следующие проблемы, связанные с вышеуказанными операциями (кстати, я использую локальные уведомления для запуска процесса):Objective-c Long Running Task Thread Confusion
1) Операции, связанные с интерфейсом UI (контроллер текущего текущего вида), как представляется, задний план.
2) Когда я выхожу из вида на контроллер корневого представления, в корневом представлении есть некоторое nsurlconnection, которое отправляет данные своему делегату. Поскольку длинные запущенные задачи выполняются в глобальной очереди, nsurlconnection, похоже, не отправляет какую-либо информацию своему делегату.
Я использую следующий код для этого процесса:
UIBackgroundTaskIdentifier __block bgTask;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
«операции, связанные с UI (выскакивают текущий контроллер представления), кажется, не в состоянии в фоновом режиме.» Если вы находитесь в фоновом режиме, у вас нет пользовательского интерфейса. Это (часть), что значит быть на заднем плане. Вам нужно переосмыслить всю эту архитектуру. – matt
Спасибо, что спасли меня много часов. – user1433743