+ [Синхронизация CATransaction], вызываемая в транзакции

Если я закрываю приложение для iPad, пока я загружаю данные из служб, приложение закрывается, а затем сразу открывается снова, не делая ничего. На данный момент я ничего не могу сделать; Я не могу закрыть приложение, и я не могу взаимодействовать с приложением или устройством. Единственный способ снова использовать устройство - перезапустить его. Приложение не сбой, оно просто отключает устройство.

Когда это произойдет, следующая строка появится в консоли три раза сразу после applicationWillResignActive и applicationDidEnterBackground:

+[CATransaction synchronize] called within transaction

Было бы почти нормально, если приложение выйдет из строя, но тот факт, что устройство полностью бесполезно, - огромная проблема. Если бы я мог перехватить эту ошибку или каким-то образом обнаружить, когда CATransaction вызывает эту проблему, тогда все будет в порядке.

Любые идеи?

Ответ 1

Это происходит, когда в основной теме происходит несколько анимаций. Я столкнулся с такой же проблемой. В моем случае приложение зависает во время анимации CALayer и одновременного вращения устройства. Поэтому я остановил анимацию при вращении устройства.

Ищите код

[CATransaction begin]

//foo
[CATransaction commit]

Убедитесь, что анимация внутри этого кода не перекрывается с другими анимациями в основном потоке.