iOS开发实用技巧和工具

1.效率神器AppCode

Xcode是苹果最知名的开发工具,但并不是唯一的开发工具。Appcode就是另一款强大的iOS开发工具,用过JetBrain产品的人都深知其好处,丰富的快捷键,强大的提示功能,会用的人都说好(我说的是会用,用了两天没用明白就放弃的兄弟你是真的错过了好东西)。

但是要说明一点。只建议开发OC时候用。之前公司项目使用OC开发,Appcode用起来那叫一个爽。但是后来公司开发swift,appcdoe的表现就不尽如人意了,提示紊乱,在可选属性的code completion上还不如Xcode。例如实例person有一个可选类型(非隐式可选)的属性tool,tool所声明的类型Tool有一个属性叫name(String类型好了),场景是我们给这个name赋值,下面是输入完的场景:

// Xcode
person.tool?.name = "黑粗大长直"
// Appcode
person.tool.name = "黑粗大长直"
复制代码

很明显后者是不正确的,使用Xcode编译器,在输入完.tool再输入.name之后会自动根据tool是可选类型,给tool加上一个?。当然这只是使用过程中头疼的一点。

个人认为Appcode还是很强大的,有着Xcode没有的各种功能,包括插件,快捷键,auto import等等,所以希望Appcode能够早日对Swift完美支持!

2.强大的快捷键工具keyboard maestro

形容keyboard maestro仅仅是一款强大的快捷键工具有点狭隘了。因为他的功能可不止如此。

keyboard maestro的主要功能是用来编辑一连串的操作,然后生成一个宏,这个宏可以使一个按键组合、键盘输入的字符串等等。

例如:你可以设置当你输入PCshutdown这一串字符串实现关机;亦可以录制一连串的操作来实现Appcode的cmd+D复制上一行的内容。下面以此为例进行一个简单的教学。 1.首先说明一下cmd+D的功能,在appcode中,例如你输入的一行代码,后面几行代码内容基本相似。你会选择复制这一行代码,然后回车粘贴,回车粘贴... 操作就是在这一行后面直接cmd+D

1 let image0 = UIImage(named: "image_0_1")
复制代码

此时光标在第1行,appcode中按下cmd+D后会得到下面内容(数字代表行号)

1 let image0 = UIImage(named: "image_0_1")
2 let image0 = UIImage(named: "image_0_1")
复制代码

结果:完全复制上一行内容。

2.分析一下这几部的操作 其实整个操作相当于下面几部:

(1)cmd + <-光标移至最左边

(2)shift + cmd + ->选中光标右侧的整行内容

(3)cmd + c复制

(4)回车 换行

(5)cmd + v粘贴

3.操作实现

(1)点击创建一个Marco

(2)命名之后添加一个trigger(相当于启动这个宏的快捷键或者操作)

(3)选择Hot Key Trigger (在这里Typed String Trigger就是前面所说的输入一串字符)

(4)设置完快捷键点击 New Action

(5)接来下就是按照第2步我们分析的内容一步一步设置Action了:

(6)完成每一步操作后就可以了

另外要注意的是我们最后还要还原系统的剪切板。

这样Xcode上也可以使用这个快捷键了

3.R.swift

没错,不是RxSwift,也是不ReSwiftR.swift只是一个脚本工具,通过每次编译的时候,在项目根目录用脚本生成一个R.generated.swift文件。用户需要对这个文件建立引用,并加入.gitignore。就可以更健康地引用图片颜色等内容! 以图片文件为例,我们创建UIImage实例,一般通过字符串的方式创建UIImage:

let image = UIImage(named: "me_wallet_coin")
复制代码

大家都知道字符串访问的方式实在纯,手打怕打错有风险。 就算你输入对了,哪天你同事或者你在清理项目不用的图片的时候还要项目全局去搜索。how stupid!怀念当年的图片提示插件啊!

但是有了R.swift就大不一样了。(安装和部署我就不讲解了github上都有,也很简单)

继续以设置UIImage为例,上代码:

//正常设置方式
let settingsIcon = UIImage(named: "me_wallet_coin")
//R.swift设置方式
let settingsIconResource = R.image.me_wallet_coin()
let settingsIcon = UIImage(resource: settingsIconResource)
复制代码

p.s:R.swift写了一个UIImage实例化方法的extension

public convenience init?(resource: ImageResourceType,
   compatibleWith traitCollection: UITraitCollection? = nil) {
    self.init(named: resource.name, in: resource.bundle, compatibleWith: traitCollection)
}
复制代码

在日常开发中使用这种方式,更加安全,且更加便于维护和管理资源!

另外:这种方式还有一个好处,我们在往xcode拖图片的时候要养成一个良好习惯-合理给图片命名,例如上面的me_wallet_coin,通过这个命名可以看出页面的层级和使用场景(我的界面-钱包界面-硬币icon)。因为这个命名最终会在你的代码中体现出来,并以R.image的属性的形式体现,命名丑陋,便会导致代码丑陋/:X-)

再贴上另一款swift第三方库SwiftGen功能类似R.swift

猜你喜欢

转载自juejin.im/post/6844903534396358663