T 小事: 自动生成Getter代码 - CocoaChina_让移动开发更简单

首页 >iOS开发

小事: 自动生成Getter代码

2017-06-16 11:30 编辑: sasukeo 分类:iOS开发 来源:黑花白花的简书

原文

之前有看到过一个Xcode插件, 可以根据选中的属性名自动生成对应Getter代码, 当时我还在想: 这东西挺有用的, 但自己一直都是xib/storyboard开发, 不太用得上.

谁知道, 没过多久我就被告知以后的项目只能使用纯代码编程了, 这就很尴尬了, 更尴尬的是那个插件链接当时没存, 现在怎么找都找不到了.

后来辗转了解到那个插件是基于Xcode Source Editor Extensions开发的, 看了看相关资料发现不太麻烦, 就花了两个小时自己写了一个. 实现效果如图:

2595746-5616194b6804b8ca.gif

如何使用

使用方式很简单, 打开插件工程, Command+R然后选择Xcode开始运行. 如图:

2595746-01b26c47d5bcf004.png

插件运行成功后, Dock栏会有一个黑色的Xcode图标, 点击黑色Xcode选择自己的项目工程打开, 然后选中想要生成Getter代码的属性列表, 最后点击Xcode工具栏的Editor->HHGetterGenerator->Source Editor Command即可(如果Editor栏没有插件名, 那可能是插件运行失败了, 重新运行即可). 如图:

2595746-74f1f17f8e71cac9.png

当然, 如果你觉得鼠标点击的方式比较麻烦的话, 你也可以通过Xcode偏好设置->Key Bindings设置一下插件的快捷键. 如图:

2595746-807a654d37b8551b.png

最后, 因为插件我是用免费证书运行的, 所以如果插件工程停止运行, 那么东西就不灵了. 各位可以自己把代码拉下来以后替换成公司的开发证书, 然后插件就可以实实在在的装到Xcode上了, 具体过程请参考:Xcode 8 插件——Source Editor Extensions

如何拓展

个人比较懒散, 只实现了一些自己用的上的代码块, 如果你有其他需求或者文中代码规范不合你意, 可以自己到SourceEditorCommand.m中添加/修改源码, 里面我已经定义好了一些简单的宏方便后续的拓展.

如果你需要新的类Getter方法, 假设类名是XXX, 那么自己添加一个XXXGetter进行实现, 然后呢在generateGetterDescription加上ReturnGetter(XXX)即可.

SourceEditorCommand.m里面的现有实现是这些:
static inline NSArray *generateGetterDescription(NSString *className, NSString *propertyName) {

#define ReturnGetter(clsName) if ([className isEqualToString:[NSString stringWithUTF8String:#clsName]]) return clsName##Getter(propertyName);

    ReturnGetter(UIView)
    ReturnGetter(UILabel)
    ReturnGetter(UIButton)
    ReturnGetter(UITextView)
    ReturnGetter(UITextField)
    ReturnGetter(UIImageView)
    ReturnGetter(UITableView)
    ReturnGetter(UICollectionView)

    return nil;
}

static inline NSArray *UIViewGetter(NSString *propertyName)
static inline NSArray *UILabelGetter(NSString *propertyName)
static inline NSArray *UIButtonGetter(NSString *propertyName)
...其他UI

note: 如果你想要自己改源码, 需要注意一点: Xcode Source Editor不太稳定, 多次运行容易崩溃. 不过插件工程的崩溃不会影响到我们的项目的工程, 所以不用担心, 你需要的, 只是耐心的再次运行.

本文附带的demo地址

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇: 消息转发机制与Aspects源码解析
下一篇:iOS九宫格布局

相关资讯

我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部