我如何修复"[App]如果我们在真正的预提交处理程序中,由于CA限制我们实际上无法添加任何新的围栏"?

Dan*_*ray 8 xcode ios swift

当我在模拟器中旋转设备时,我在控制台中收到以下消息:[App] if we're in the real pre-commit handler we can't actually add any new fences due to CA restriction.

有很多关于如何抑制警告的信息,例如在这个问题中.然而,似乎这只是在没有实际解决任何问题的情况下踩到问题.

警告究竟意味着什么,我该如何解决?

all*_*enh 9

"警告究竟意味着什么?"

不幸的是,我对CoreAnimation的内部结构还不够了解,无法完全解释消息的含义.在第二个答案试图通过检查反汇编代码来解释它.

"我如何解决它?"

可能 不能由你定,因为它不与你的应用程序有问题,尽管什么消息可能与其使用的"[应用]"建议.(第二个答案引用的问题,还说那么多.)

我相信这条消息开始出现在iOS 10中,并且它(通常)在设备轮换期间发生.我无法修复的证据是,如果您创建一个空白的"单一视图应用程序"项目,启动它(模拟器或设备)并旋转屏幕将发出消息.

iOS 12 beta 4开始,旋转屏幕时不再发出此消息.这并不是说它不会在其他时间发生,因为UIKit发射它的原因可能在其他情况下有一些优点.如果可能,请在Xcode 10 beta 4中试用您的应用程序,看看它是否仍然打印出该消息.

这里也值得一提,OS_ACTIVITY_MODE因为该方法抑制了太多有价值的调试信息,例如堆栈跟踪,所以抑制消息是一个坏主意.