Я думаю, что понимаю, как работает следующее, но будет признателен за подтверждение.IOS/Objective-C: возвращение в основной поток
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL: dataUrl];
[self fetchData:data];//go to web, get data and store in core data
}
dispatch_async(dispatch_get_main_queue(), ^{
//display new data on main thread.
}
Мой вопрос не может принять это как должное, что дисплей на главном потоке не будет происходить до тех пор, после завершения все, что происходит в фоновом режиме - независимо от того, как долго?
Причина, котор я хотел бы получить подтверждение, что иногда я наблюдаю некоторые проблемы с дисплеем. Хотите убедиться, что дисплей не пытается получить доступ к основным данным, когда фоновый поток еще не завершил сохранение.
это правильно. но что вы имеете в виду с «дисплеем не ...»? Как «дисплей» ничего не делает. –
Вызов '[NSData dataWithContentsOfURL]' может выполнять сетевой запрос из Интернета, в зависимости от того, где URL указывает на. Если это URL-адрес файла, указывающий на файл в локальной файловой системе, он просто извлекает данные из локального файла. Если это удаленный URL-адрес, например 'http: // foo/bar.jpg, то он будет SYNCHRONOUSLY извлекает данные с удаленного сервера –