关 于iOS UI调试工具Reveal的配置,很多初学者朋友可能在网上搜索到一些文章,这些文章大部分都是讲述了如何通过配置Xcode项目,通过加入一些库文件, 并且在程序中编写额外的代码来调用Reveal服务,从而保证调试程序的时候能够将项目附加到Reveal中分析。

这种方式,比较繁琐,并且每写个项目都需要重复这些繁琐的步骤,这是让人难以忍受的。为此,在下通过诸多分析尝试,终于发现了一种一劳永逸的方法。现在就 将这个方法介绍给大家。这个方法不是我发明的,这是Reveal官方的文档提供的方法。但是网上鲜少提及,我在这里把这个方法介绍给大家。这个方法是通过 Xcode断点命令来调用Reveal服务,然后保证在程序在模拟器运行的时候,Reveal随时都可以附加上,这样就可以方便地分析UI的层次结构。这 个方法只需要对Xcode做一次配置,从此以后,任何时候都可以使用Reveal,这是极其方便的,避免了每次繁琐的项目配置,并且不需要编写任何代码。 下面我就详细地跟大家介绍一下具体的配置方法。

如果你尚未安装Reveal,建议从官方下载安装试用。

本文使用的Reveal版本是1.5.1

下面是详细的配置步骤:

1.在Xcode中打开一个iOS项目,选择菜单项View → Navigators → Show Breakpoint Navigator.步骤如下图所示:

2.在左侧的导航面板下方,点击“+”并且选择【Add Symbolic Breakpoint 】菜单项,如下图所示:

3.在弹出面板的Symbol字段中填写“UIApplicationMain”,如下图:

4.点击Add Action 按钮,如下图:

5.复制如下的命令粘贴到上图中所示的编辑框:

expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void*)0)

如下图所示:

上述命令中,有个路径字符串

/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib

请确保这个字符串所指的文件在磁盘上存在(正常情况下,如果将Reveal安装到Application目录,这里不会出问题)。

6.勾选Automatically continue after evaluating actions选项


7.完成上述步骤以后,在新创建的断点上面点击右键,弹出如下菜单并选择,如下图所示:

现在,所有的配置步骤均已完成。以后无论分析任何项目,都可以直接启动Reveal 并分析。

现在启动一个项目调试,Xcode控制台会输出如下log,表明配置正确,Reveal已经可以正常启动使用,如下图所示:

接下来启动Reveal,如下图操作:

下面体验一下Reveal的强悍吧:

在上面这个演示demo中,足以说明Reveal的强大与方便,各种层次结构一目了然,特别是针对那些不规则的UI实现,可以进行方便的分析。

不修改Xcode项目加载Reveal的更多相关文章

  1. ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...

  2. 001-ant design pro安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...

  3. VS2012 VS2015打开项目加载失败

    VS2012 VS2015打开项目加载失败 改成这个$(MSBuildToolsVersion)试试

  4. django之创建第12个项目-加载图片

    百度云盘:django之创建第12个项目-加载图片 1.setting配置 #静态文件相关配置 # URL prefix for static files. # Example: "http ...

  5. intellij idea 15 修改基础配置加载路径

    一.概述 intellij idea 15 默认配置的启动加载路径是"C:\Users\Administrator.IntelliJIdea15",这样会导致占用C盘的空间越来越多 ...

  6. vue项目性能优化,优化项目加载慢的问题

    一. 对路由组件进行懒加载: 如果使用同步的方式加载组件,在首屏加载时会对网络资源加载加载比较多,资源比较大,加载速度比较慢.所以设置路由懒加载,按需加载会加速首屏渲染.在没有对路由进行懒加载时,在C ...

  7. Tomcat增加Context配置不带项目名访问导致启动的时候项目加载两次

    eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/.现在需要改成这样访问http://localhost.修 ...

  8. vs2015 web项目加载失败解决办法

    1.问题 ---------------------------Microsoft Visual Studio---------------------------Web 应用程序项目 XXWeb 已 ...

  9. django 中静态文件项目加载问题

    问题描述: django项目中创建了多个app后,每个app中都有对应的static静态文件.整个项目运行时这些静态文件的加载就是一个问题,因为整个项目我只参与了一部分,项目部署之类的并没有参与.我写 ...

随机推荐

  1. Emit学习(4) - Dapper解析之数据对象映射(一)

    感觉好久没有写博客了, 这几天有点小忙, 接下来会更忙, 索性就先写一篇吧. 后面估计会有更长的一段时间不会更新博客了. 废话不多说, 先上菜. 一.示例 1. 先建类, 类的名称与读取的表名并没有什 ...

  2. HoverTree系统源码介绍

    HoverTree是一个开源asp.net系统.系统的效果请到:http://hovertree.com体验. 源码描述:一.源码特点采用典型的三层架构进行开发,实现了留言板的功能,后台管理,留言审核 ...

  3. java调用Oracle分页存储过程

    Java程序 package com.test; import java.sql.CallableStatement; import java.sql.Connection; import java. ...

  4. ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

    首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...

  5. Quartz中的时间表达式介绍和常用表达式

    Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不 ...

  6. ActionSupport与action区别

    action是接口,只有一个execute方法需要实现.ActionSupport是action接口的一个实现类.这个类除了实现action接口还实现了Validateable(用于验证)等接口,开发 ...

  7. JavaScript对象(Object)

         JavaScript的简单数据类型包括数字.字符串.布尔值.null值和undefined值,其他所有的值都是对象.数字.字符串.布尔值“貌似”对象,因为他们拥有方法,但是他们是不可变的. ...

  8. Python实现装饰模式的一段代码

    # 实现装饰模式的一段代码 import functools def log(func): @functools.wraps(func) def wrapper(*args,**kw): print( ...

  9. 01Mybatis_课程安排

    课程安排: mybatis和springmvc通过订单商品 案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开发)问题总结 mybatis框架原理   (掌握) m ...

  10. 【精心推荐】几款实用的 JavaScript 图形图表库

    一款好的图表插件不是那么容易找到的.最近项目里需要实现统计图表功能,所以在网上搜罗了一圈,找到一些不错的图表插件,分享大家.众多周知,图形和图表要比文本更具表现力和说服力.这里给大家精心推荐几款实用的 ...