Apple隐藏的Debug利器UIDebuggingInform

作者: b9bd2a64f47e | 来源:发表于2017-05-27 13:49 被阅读182次
    • UIDebuggingInformationOverlay是继承自UIWindow的私有类,是Apple调试们自己的app的时候用的,并没有开放给开发者。然而,这个私有类最近国外一个哥们偶然发现,发现这个工具真实太强大了。下面介绍一下这个东西怎么用。

    • 当我们调出它的时候,它的debug窗口就会在整个Window之上,如下:

    2017-05-27 13_29_35.gif
    • 那么如何调出这个工具呢,废话不多说,只需要在AppDelegate.m中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中加入以下代码即可:
    #ifdef DEBUG//因为这个是私有的api,一定要保证上线时的包中不包含这段代码!
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
        id debugClass = NSClassFromString(@"UIDebuggingInformationOverlay");//获得对象
        [debugClass performSelector:NSSelectorFromString(@"prepareDebuggingOverlay")];//开启调试模式
    #pragma clang diagnostic pop
    #endif
    
    • 运行工程,app启动之后,用2个手指点击状态栏就会调出debug窗口,再次点击就会消失。
    Snip20170527_2.png
    • 你也可以在需要的地方手动弹出debug窗口:
    #ifdef DEBUG//因为这个是私有的api,一定要保证上线时的包中不包含这段代码!
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
        id debugClass = NSClassFromString(@"UIDebuggingInformationOverlay");//获得对象
        [debugClass performSelector:NSSelectorFromString(@"prepareDebuggingOverlay")];//开启调试模式
    
        id debugOverlayInstance = [debugClass performSelector:NSSelectorFromString(@"overlay")];//手动弹出窗口
        [debugOverlayInstance performSelector:NSSelectorFromString(@"toggleVisibility")];
    #pragma clang diagnostic pop
    #endif
    
    • 关于这个debug窗口中各个模块的用法,我简单的总结如下,大家最好自己体验一下,cool。

      • View Hierarchy
        展示当前window下的view列表、包含关系,而且可以看到每个view的详细信息,位置、透明度、甚至view的属性值,感觉比另一软件Reveal都强大。
      • VC Hierarchy
        展示当前控制器的继承关系。而且可以看到控制器的详细信息。
      • Ivar Explorer
        展示UIApplication,以及其他对象的当前的属性值。
      • Measure
        这个是非常好用的功能,可以查看屏幕中元素之间的尺寸,选择Vertical或者Horizontal,然后用手指在你想要查看的界面上滑动,看到了吧,试试吧
      • Spec Compare
        你可以把你相册中的图片暂时的导入当前的window上,而且导入之后可以在图片上滑动手指来调整图片的透明度,想象一下,你可以把设计师的设计稿导入查看效果。
      • System Color Audit
        目前还不知道,这个有什么用(摊手)。
    • 谢谢阅读此文,希望它能对你有用。

    • 转载请注明出处。

    相关文章

      网友评论

        本文标题:Apple隐藏的Debug利器UIDebuggingInform

        本文链接:https://www.haomeiwen.com/subject/bdhqfxtx.html