_exactly_如何将DTFoundation集成到另一个iOS项目中?

时间:2014-01-04 01:38:27

标签: ios

我正在尝试调试一个项目,我怀疑在后台线程中调用了UI操作。此链接:UIViewController animations stop working描述了如何使用DTFoundation代码来检测后台线程中是否调用了UI操作,但我无法弄清楚如何集成。我不使用Pods - 它是另一个应用程序的XCode项目。我尝试拖动DTFoundation.xcodeproj,将其添加到目标但我无法让它工作。应用程序构建但库不会。任何圣人的建议?

1 个答案:

答案 0 :(得分:3)

好的,对于任何想要使用DTFoundation来捕获主线程之外的UIKit调用的人,这里是如何(注意:这仅用于捕获UIKit调用 - 不利用所有其他DTFoundation实用程序)。

1)从这里下载DTFoundation代码https://github.com/Cocoanetics/DTFoundation并将其解压缩到某处

2)在XCode中,打开要调试的现有项目,然后从解压缩的DTFoundation代码中将以下.h和.m文件复制到项目中: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> }); 

或任何其他适当的方式

享受!这个框架可以节省数小时的流量