Si je ferme mon application iPad pendant le chargement de données à partir de services, elle se ferme mais se rouvre immédiatement sans que je ne fasse rien. À ce stade, je ne peux rien faire; Je ne peux pas fermer l'application et je ne peux pas interagir avec l'application ou l'appareil. La seule façon d'utiliser le périphérique à nouveau est de le redémarrer. L'application ne se bloque pas, elle désactive simplement l'appareil.
Lorsque cela se produit, la ligne suivante apparaît dans la console trois fois juste après applicationWillResignActive et applicationDidEnterBackground:
+[CATransaction synchronize] called within transaction
Si l'application devait tomber en panne, ce serait presque normal, mais le fait que l'appareil devienne complètement inutile est un énorme problème. Si je pouvais intercepter ce bogue ou si, d'une manière ou d'une autre, détecter quand CATransaction pose le problème, tout irait bien.
Des idées?
Cela se produit lorsque plusieurs animations ont lieu sur le thread principal. J'ai rencontré le même problème. Dans mon cas, l'application se fige lors de l'animation de la couche CAL et de la rotation simultanée de l'appareil. J'ai donc arrêté l'animation en faisant pivoter l'appareil.
Cherchez le code
[CATransaction begin]
//foo
[CATransaction commit]
Assurez-vous que l'animation à l'intérieur de ce code ne chevauche pas vos autres animations sur le fil principal.
Cela peut apparaître dans les journaux si vous utilisez UIWindow.rootViewController
pour ignorer complètement les storyboards.
Pour abandonner le message de journal, vous pouvez supprimer le storyboard, supprimez la clé associant le storyboard à votre application dans info.plist, définissez LaunchScreen.storyboard
comme Main Interface
dans la cible, puis utilisez
window = UIApplication.shared.keyWindow!
inside AppDelegate
pour obtenir la window
principale et y affecter votre UIViewController
.