По моему опыту, если у вас есть видимый слой и вы установили содержимое в фоновом потоке, скорее всего, он не будет рисоваться сразу.Решением, которое я использовал, было асинхронное задание свойства содержимого с помощью вызова dispatch_async () в главном потоке:
dispatch_async(dispatch_get_main_queue(), ^(void) {
layer.contents = (id)myCGImage;
});
В частности, мой пример здесь для работы с потоками с использованием GCD, где сам потокможет долго переживать операцию, которую вы выполняете.В этом случае размещение назначения в главном потоке или принудительная очистка [CATransaction] являются двумя способами указать ОС, что вы хотите, чтобы эти данные были представлены пользователю.
В противном случае, в случаефонового потока GCD, вы находитесь во власти цикла выполнения потока, который может не выполнять [очистку CATransaction] в течение длительного времени (по моему опыту, в секундах).