iOS app调试的黑魔法--第三方库

http://www.cocoachina.com/ios/20140928/9785.html

苹果的Xcode是一个非常强大的开发和调试工具,而iOS 8更是为它带来了全新的动力驱动,比如Instruments、iOS模拟器以及Playground等。

不过有时候仍然会觉得我们的Xcode似乎还是欠缺某些功能和特性,不能满足开发者的某项需求,正是在这种背景下,很多开发者采用了自己的解决方案。以下列举的是可以集成到现有项目中,并且可以有效帮助调试和开发的工具。

FLEX

FLEX是Flipboard开源的一款调试工具,你可以用FLEX来检查UI元素和调整框架等。FLEX在应用程序中的作用有点类似于Reveal App。Reveal通过2D和3D可视化技术可以让你查看app运行时的视图层次,也可以让你快速Debug视图布局问题和渲染问题。

关于FLEX的具体用法请参看:Flipboard开源应用内调试工具FLEX  以及团队成员Evan Doll关于 Flipboard团队使用的iOS开发工具 的视频演讲  

关于Reveal App的详细说明请参看:Reveal通过视图层次帮你理解复杂的app 并提供相关Debug功能  

OHHTTPStubs  

在你的服务器没有准备妥当或者在你需要模拟数据进行本地开发时,OHHTTPStubs是一个很好的可以加速测试和开发的工具。OHHTTPStubs可使用伪造的网络数据和模拟的缓慢网络来测试你的应用程序,从而检测你的应用程序在不佳的网络环境中的行为,并使用伪造的网络数据编写单元测试。

NSObjectIntrospection 

NSObjectIntrospection是NSObject的一个类别,用以runtime自省,你可以通过它列出运行中的类的方法和属性,或者通过调试控制台。

Tweaks

Tweaks是Facebook开源的调试工具,可帮开发者实时调整参数并测试效果(编辑注:主要进行小幅调整,比如颜色和动画),同时也是Facebook在其应用Paper中大量使用的工具。

Tweaks对设计师和开发者之间的小幅调整非常有用,设计师可以微调元素的数值并将其输出给开发团队以完成更改。对于该工具,你还可以看看这个讲述Facebook开发团队在构建Paper app的过程,以及在该过程中如何使用Tweaks的视频。

MMLayershots  

MMLayershots可以把iOS app的截图转换为分层的PSD文件。不管何时你截取应用截图,它都会从整个app的视图层次生成一个PSD文件,然后你可以在PSD编辑工具(Photoshop,Pixelmator,Acorn甚至GIMP)中使用PSD文件,并按照你喜欢的方式调整图层,从而在视觉上进行更快速的迭代。另外,还可以使用Framer.js进行动画和交互的快速原型,并让UI变得鲜活起来。


CocoaLumberjack 

CocoaLumberjack是一个适合OS X和iOS的日志框架,集快速、简单、强大、灵活于一身。通过CocoaLumberjack,你可以为调试控制台添加颜色,可以提供不同级别的日志记录,还可以为日志编写自定义格式。

CocoaLumberjack的概念类似于广受欢迎的logging框架,比如log4j。CocoaLumberjack专为Objective-C设计,充分利用了多线程、Grand Central Dispatch(如果可用)以及Objective-C运行时的动态特性等。

Aspects 

Aspects是Cocoa中面向方面编程的简单开源库,你可以通过它为现有的类的方法或者实例添加代码,同时考虑插入点位置,比如before/instead/after。Aspects比常规的方法混用更为简单。

RHObjectiveBeagle 

  1. (lldb) po beagle(@"UISwitch") 
  2. <__NSCFArray 0x8f2e6c0>( 
  3. <UISwitch: 0x8f73aa0; frame = (93 226; 51 31); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x8f73bd0>>, 
  4. <UISwitch: 0x8e6fa50; frame = (171 226; 51 31); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x8c6a760>> 

RHObjectiveBeagle是一款Objective C调试辅助工具,它可以在运行过程中找出指定类的实例。你可以通过它列出类及其子类的所有实例,列出指定类的所有实例,找出指定类的首个实例,查找并列出指定类的所有子类。

posted @ 2014-09-28 16:25  周宏伟  阅读(721)  评论(0编辑  收藏  举报