如果我在从服务加载数据时关闭我的iPad应用程序,该应用程序将关闭,但会立即再次打开,而不会执行任何操作。此时,我无能为力;我无法关闭应用程序,无法与应用程序或设备进行交互。再次使用该设备的唯一方法是重新启动它。该应用程序不会崩溃,它只是禁用该设备。
发生这种情况时,在 applicationWillResignActive 和 applicationDidEnterBackground:
之后,控制台中会出现以下行:+[CATransaction synchronize] called within transaction
如果应用程序崩溃几乎可以,但设备完全无用的事实是一个巨大的问题。如果我可以拦截这个错误或以某种方式检测 CATransaction 何时引发此问题,那就没关系了。
有什么想法吗?
答案 0 :(得分:11)
当主线程上发生多个动画时会发生这种情况。我遇到了同样的问题。在我的情况下,应用程序冻结同时动画CALayer并同时旋转设备。所以我在旋转设备时停止了动画。
寻找代码
[CATransaction begin]
//foo
[CATransaction commit]
确保此代码中的动画与主线程上的其他动画不重叠。
答案 1 :(得分:0)
如果您使用UIWindow.rootViewController
完全跳过情节提要,这会显示在日志中。
要放弃日志消息,您可以删除情节提要,在info.plist中删除将情节提要与您的应用相关联的键,在目标中将LaunchScreen.storyboard
设置为Main Interface
并使用
window = UIApplication.shared.keyWindow!
在AppDelegate
内部获取主要window
并在其上分配您的UIViewController
。