Objective-C与Swift如何使用Reveal
2015-12-02 本文已影响553人
Hua_san
目的
整合Objective-C与Swift写的项目同时支持Reveal调试,本文推荐的调试方法不污染项目,不仅适用于个人开发,也适用于团队开发。
简介
有的公司没有产品原型图或者没有给出详细界面布局,需要当着产品经理修改UI元素,每次修改完了重新运行模拟器查看效果是一件非常痛苦的事情,在此介绍一款工具Reveal,如果没有了解这款工具,请查看唐巧写的《iOS界面调试工具 Reveal》。好多文章都给出了Objective-C使用Reveal调试的方法,在此我不在累赘。本文章出现目的是整合了Objective-C与Swift共同使用同一个脚本,没有详细阐述,如有不清楚的请移步唐巧文章。
Reveal调试工具使用步骤:
- 在用户根目录创建.lldbinit文件,打开终端命令输入以下内容
$ cd ~
$ touch .lldbinit
- 使用vim编辑器编辑.lldbinit文件
$ vim .lldbinit
$ i
- 拷贝以下内容到.lldbinit文件中
command alias swift_reveal_load_sim expr dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 2)
command alias swift_reveal_load_dev expr dlopen(NSBundle.mainBundle().pathForResource("libReveal", ofType: "dylib")!, 2)
command alias swift_reveal_start expr NSNotificationCenter.defaultCenter().postNotificationName("IBARevealRequestStart", object: nil)
command alias swift_reveal_stop expr NSNotificationCenter.defaultCenter().postNotificationName("IBARevealRequestStop", object: nil)
command alias objc_reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias objc_reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias objc_reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
command alias objc_reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:nil];
- 打断点与编辑断点
在AppDelegate类的 application: didFinishLaunchingWithOptions: 方法中,作如下3步操作(如下图所示):- 点击该方法左边的行号区域,增加一个断点,之后右击该断点,选择“Edit Breakpoint”。
- 点击”Action”项边右的”Add Action”,
注意:这里和唐巧的文章有点修改
:
swift项目输入“swift_reveal_load_sim”
OC项目输入“objc_reveal_load_sim”
- 勾选上Options上的”Automatically continue after evaluating”选项。
- 运行程序,启动Reveal即可