原文地址: http://www.cocoachina.com/applenews/devnews/2014/0530/8623.html
injection plugin for xcode
发布于:2014-05-30 14:05阅读数:218
Injection Plugin For Xcode 是 Xcode 上的一个插件。利用它可以修改应用代码,实时在模拟器或实机上看到效果而不需要重启应用。安装后,重启Xcode,会发现在 Product 菜单下多了两个选项:
“ ”
Injection Plugin For Xcode 是 Xcode 上的一个插件。利用它可以修改应用代码,实时在模拟器或实机上看到效果而不需要重启应用。
安装
点此下载 Injection Plugin for Xcode。安装后,重启Xcode,会发现在 Product 菜单下多了两个选项:
点击 Product > 你的工程名 > Patch Project for Injection 选项, 之后插件会在 Prefix.pch 和 main.m 中插入两段代码。这不会影响程序原有代码,如果要还原,随时可以通过点击 Revert Injection’s Changes 选项来还原。
基本使用
我们做一个很简单的应用,其有一个 UIButton 和一个 UILabel,当点击 button 后,label 显示一段文本,ViewController 的代码如下:
- @interface ViewController ()
- @property (weak, nonatomic) IBOutlet UILabel *label;
- @end
- @implementation ViewController
- - (IBAction)buttonTouched:(id)sender
- {
- self.label.text = @"阿布上班不为了钱";
- }
- @end
运行后,点击按钮,效果如图所示:
之后我们修改代码,将赋给 label 的字符串改为:
- self.label.text = @"阿布钱多到花不完";
但区别于一般的使用 CMD+R 来重新编译并运行程序,这次我们使用 control+= 这个快捷键来注入。你会发现代码上方出现一个进度条:
注入完成后,修改的类的代码就生效了,点击模拟器中应用的按钮试试。
实时参数调整
Injection Plugin 还提供了5个变量和5个颜色,分别存在插件提供的全局数组变量 INParameters 和 INColors 中。我们可以在程序使用这两个数组变量,并可以在程序运行过程中实时修改。
我们建立个新工程,这一次,我们通过修改插件提供的一个颜色参数,实时修改应用中 View 的背景色。代码如下:
- @implementation ViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- [NSTimer scheduledTimerWithTimeInterval:0.1
- target:self
- selector:@selector(changeColor)
- userInfo:nil
- repeats:YES];
- }
- - (void)changeColor
- {
- self.view.backgroundColor = INColors[0];
- }
- @end
运行程序,之后点击 Product > 你的工程名 > Tunable App Parameters 选项。
点击第一个颜色,试着调整颜色,看看模拟器发生了什么。
真机调试
真机调试涉及到证书问题,需要告诉 bundle project 正确的证书。可以通过在工程文件中添加以下 RunScript 实现:
- echo "$CODESIGNING_FOLDER_PATH" >/tmp/"$USER.ident" && echo "$CODE_SIGN_IDENTITY" >>/tmp/"$USER.ident" && exit;
具体操作如下:
之后就可以正确在真机上使用了。如果依然出现证书错误,尝试删除工程文件夹里的 iOSInjectionProject 目录。
最后,例如 storyboard injection 这些 Xcode 5 上已经失效的功能就不介绍了。如果想要了解更多,请访问
Injection Plugin for Xcode 的 Github 页面