34

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

发生这种情况时,控制台中会在applicationWillResignActive和applicationDidEnterBackground之后出现 3 次以下行

+[CATransaction synchronize] called within transaction

如果应用程序崩溃几乎没问题,但设备完全无用的事实是一个大问题。如果我可以截获这个错误或以某种方式检测CATransaction 何时引发此问题,那很好。

有任何想法吗?

4

2 回答 2

13

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

寻找代码

[CATransaction begin]

//foo
[CATransaction commit]

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

于 2012-04-25T05:17:23.310 回答
0

UIWindow.rootViewController如果您完全跳过情节提要,这可能会显示在日志中。

要放弃日志消息,您可以删除情节提要,删除在 info.plist 中将情节提要与您的应用程序关联的键,设置LaunchScreen.storyboardMain Interface目标并使用

window = UIApplication.shared.keyWindow!

在里面AppDelegate获取主要window并分配你UIViewController的。

于 2018-09-06T12:01:50.570 回答