iOS - This application is modifying the autolayout engine from a background thread.

在iOS9以后调试出现错误信息:This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.

这个错误信息的意思是一些UIKit的代码被后台线程调用了,而这些代码应该是在主线程中执行的,因而,这个错误的解决方案就是将那些被后台线程调用了的UIKit代码拿到主线程当中:

如果你并不知道或者说想知道是哪些代码在后台去刷新了UI,那么PSPDFUIKitMainThreadGuard能够帮到你:

1.将代码添加到你的项目中,并且将编译设置为非ARC。(在BuildPhase中找到PSPDFUIKitMainThreadGuard.m并在compiler Flags添加“"-fno-objc-arc")

2.将PSPDFAssert的定义挪到PSPDFReplaceMethodWithBlock(Class c,SELorigSEL,SELnewSEL,idblock)的前面。

iOS - This application is modifying the autolayout engine from a background thread._第1张图片

3.添加PSPDFLogError的定义。

4.导入UIKit框架。

按照以上步骤配置完成后,再去运行程序你的app将会崩溃并且停止在任何试图从后台线程中刷新UI的操作。

你可能感兴趣的:(iOS - This application is modifying the autolayout engine from a background thread.)