打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Injection Plugin for Xcode

介绍

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 页面
阿布最高!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
关于代码手写UI,xib和StoryBoard
使用Xcode 5创建Cocoa Touch Static Library(静态库)
3分钟实现iOS语言本地化/国际化(图文详解)
iOS 7:在一般的 ViewController 中使用static cell
自定义UILabel,接受触摸事件
XCODE 4.2 中的@synthesize, @property
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服