+[cattransaction synchronize]在事务内调用



如果我在从服务加载数据时关闭iPad应用程序,应用程序会关闭,但随后会立即打开,而无需我做任何事情。在这一点上,我什么也做不了;我无法关闭应用程序,也无法与应用程序或设备交互。再次使用设备的唯一方法是重新启动它。应用程序不会崩溃,它只是禁用设备。

发生这种情况时,以下一行在applicationWillResignActiveapplicationDidEnterBackground:

之后出现三次
+[CATransaction synchronize] called within transaction

如果应用程序崩溃,这几乎是可以接受的,但事实上,设备被渲染成完全无用是一个巨大的问题。如果我能拦截这个bug,或者以某种方式检测到 cattransaction 何时引发这个问题,那就好了。

任何想法?

当主线程上有多个动画时,就会发生这种情况。我也遇到过同样的问题。在我的情况下,应用程序冻结,同时动画callayer和旋转设备。所以我在旋转设备时停止了动画。

查找代码

[CATransaction begin]
//foo
[CATransaction commit]

确保此代码中的动画不会与主线程中的其他动画重叠。

如果您使用UIWindow.rootViewController完全跳过故事板,则可以在日志中显示。

要删除日志信息,你可以删除故事板,删除信息中将故事板与应用程序关联的键。将LaunchScreen.storyboard设置为目标中的Main Interface,并使用

window = UIApplication.shared.keyWindow!

AppDelegate内部获得主window并将您的UIViewController分配给它。

最新更新