我正在尝试调试一个项目,怀疑在后台线程中正在调用UI操作。此链接:UIViewController动画停止工作描述了如何使用DTFoundation
代码来检测是否在后台线程中调用了UI操作,但是我不知道如何进行集成。我不使用Pods-它是XCode
另一个应用程序的项目。我尝试拖动DTFoundation.xcodeproj
,将其添加到目标,但我无法使其正常工作。该应用程序会生成,但库不会。有任何明智的建议吗?
好的,对于任何希望使用DTFoundation在主线程之外捕获UIKit调用的人,这是这样做的(注意:这仅用于捕获UIKit调用-不能利用所有其他DTFoundation实用程序)。
1)从这里https://github.com/Cocoanetics/DTFoundation下载DTFoundation代码并将其解压缩到某个地方
2)在XCode中,打开要调试的现有项目,然后将以下.h和.m文件从解压缩的DTFoundation代码复制到您的项目中:UIView + DTDebug,DTLog,DTObjectBlockExecutor,NSObject + DTRunTime(这是8个文件-上面的每个名称都有对应的.h和.m)
3)现在转到项目中的AppDelegate.mm文件,然后在didFinishLaunchingWithOptions函数中添加
[UIView toggleViewMainThreadChecking];
4)接下来,在以下位置的UIView + DTDebug.m中设置一个断点-
(void)methodCalledNotFromMainThread:(NSString *)methodName
现在,您将全部准备好运行主代码,并且每次在主线程之外调用UI操作时,您的代码都将在此时中断。现在,您需要做的只是查看堆栈跟踪-您自己的项目代码(通常在跟踪中多行)中的第一个功能就是令人讨厌的代码。包在里面
dispatch_async(dispatch_get_main_queue(), ^{ <Offending UI code goes here> });
或其他任何合适的方式
享受!这个框架节省了很多时间
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句