+ [Синхронизация CATransaction] вызывается внутри транзакции - PullRequest
30 голосов
/ 25 августа 2011

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

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

+[CATransaction synchronize] called within transaction

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

Есть идеи?

Ответы [ 2 ]

12 голосов
/ 25 апреля 2012

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

Найдите код

[CATransaction begin]

//foo
[CATransaction commit]

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

0 голосов
/ 06 сентября 2018

Это может отображаться в журналах, если вы используете UIWindow.rootViewController для полного пропуска раскадровок.

Чтобы отключить сообщение журнала, вы можете удалить раскадровку, удалив ключ, связывающий раскадровку с вашим приложением, в информации.plist, установите LaunchScreen.storyboard как Main Interface в цели и используйте

window = UIApplication.shared.keyWindow!

внутри AppDelegate, чтобы получить основной window и назначьте ему UIViewController.

...