2017-05-29 44 views
1

我有一个使用大量第三方库的大型应用程序,现在在日志中看到以下错误:“此应用程序正在从主线程访问引擎后从后台线程修改自动布局引擎。可能导致发动机腐败和奇怪的碰撞。“查找原因:“此应用程序正在从主线程访问引擎后,从后台线程修改自动布局引擎。”

从我在这里找到的所有内容来看,这可能是由UI元素在后台线程中更改引起的,这会触发自动布局。不幸的是,我们有很多UI元素被很多不同的移动部件所改变,我不知道找到罪魁祸首的最佳方式。

任何人都可以告诉我怎么才能找出究竟是什么触发从后台线程自动布局更改?

+0

查看任何完成块。确保包含在DispatchQueue.main.async {}中的完成块中的任何UI代码。 – rmaddy

+0

这是一个巨大的应用程序。有很多完成块。所以,这么多。我希望在某个地方有一些基于工具的方法,否则它将永远占用。 –

+2

查看https://stackoverflow.com/questions/32680303/ios9-this-application-is-modifying-the-autolayout-engine-from-a-background-thr并查看最后一条评论(Swift链接)的接受的答案。 – rmaddy

回答

1

有时它不是一个完成块,而是在后台执行的任何事情。 在我的情况下是通知那里发送。我在我的应用程序中实现了iCloud,这意味着当数据被编辑或添加到另一个设备上时,其他应用程序会收到iCloud更新/通知,从而触发UITableView的更新。 更新UITableView的代码没有在MainThread中完成。如注释中所示添加代码可修复它。

相关问题