在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)的前面。
3.添加PSPDFLogError的定义。
4.导入UIKit框架。
按照以上步骤配置完成后,再去运行程序你的app将会崩溃并且停止在任何试图从后台线程中刷新UI的操作。