サービスからデータを読み込んでいる間にiPadアプリを閉じると、アプリは閉じますが、何もせずにすぐに再び開きます。この時点では、私は何もできません。アプリを閉じることができず、アプリやデバイスを操作できません。デバイスを再び使用する唯一の方法は、デバイスを再起動することです。アプリはクラッシュせず、デバイスを無効にするだけです。
これが発生すると、次の行がapplicationWillResignActiveおよびapplicationDidEnterBackground:の直後にコンソールに3回表示されます。
+[CATransaction synchronize] called within transaction
アプリがクラッシュしても大丈夫ですが、デバイスが完全に役に立たなくなっているという事実は大きな問題です。このバグをインターセプトしたり、CATransactionでこの問題が発生したことを何らかの方法で検出したりできる場合は、問題ありません。
何か案は?
これは、メインスレッドで複数のアニメーションが実行されているときに発生します。私も同じ問題に直面しました。私の場合、CALayerのアニメーションとデバイスの回転を同時に実行すると、アプリケーションがフリーズします。そのため、デバイスを回転させている間、アニメーションを停止しました。
コードを探す
[CATransaction begin]
//foo
[CATransaction commit]
このコード内のアニメーションがメインスレッドの他のアニメーションと重複しないことを確認してください。
これは、UIWindow.rootViewController
を使用してストーリーボードを完全にスキップすると、ログに表示される可能性があります。
ログメッセージを破棄するには、ストーリーボードを削除し、ストーリーボードをアプリに関連付けるキーをinfo.plistで削除し、ターゲットでLaunchScreen.storyboard
をMain Interface
として設定して使用します。
window = UIApplication.shared.keyWindow!
メインのAppDelegate
を取得してwindow
を割り当てるには、UIViewController
の内部.