前面讲解了如何将Reveal集成到项目中,但是以上两种方法无论是动态框架还是静态库都需要修改工程,但如果修改了工程文件,那么所有参与项目的开发人员都需要装Reveal,这种做法是相当不友好的,所以接下来介绍一种不修改任何工程文件的方法。
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS‐Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[[(NSBundle*)NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:nil];
reveal_load_sim
:这个命令只在iOS模拟器上有效,它从Reveal.app应用程序中找到并加载libReveal.dylib文件注意:在此处.lldbinit中查找的libReveal.dylib文件是将Reveal.app放在/Applications/路径下(默认)的情景下进行的,如果不是放在此处,请注意在.lldbinit文件中修改libReveal.dylib文件的位置)
reveal_load_dev
:这个命令是在iOS模拟器和真机上面都有效。不过它需要在项目的Building Phases
的Copy Bundle Resources
中加入libReveal.dylib
文件,添加方式请参考上一章节的动态库集成,请确保没有将其添加到Link Binary With Libraries
中。reveal_star
:这个命令发出一个通知启动RevealServer。reveal_stop
:这个命令发出一个停止RevealServer。- application:didFinishLanchWithOptions:
方法中添加断点,运行项目(Ctrl + R),当程序执行到断点处时,在控制台输入reveal_load_sim
reveal_load_sim
以后回车,出现字符串,如(void *) $0 = 0x00007fd1bb7895c0
时表示此步骤成功。(如果出现(void *) $0=0x00000000000000
全部是0
的情况,请回去检查你的.lldbinit文件中的reveal_load_sim
命令是否写错,Reveal程序是否默认放在/Applications/目录下。)- application:didFinishLanchWithOptions:
方法中添加断点 reveal_load_sim
,并勾选Automatically continue after evalueating actions
。至此已经配置完成,下面直接运行xcode项目。Automatically continue after evalueating actions
),此时控制台会输出一行信息表示加载成功,并且Reveal软件中也可以看到iOS程序的界面。