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
便是前面所说的输入一串字符)
New Action
另外要注意的是咱们最后还要还原体系的剪切板。
这样Xcode上也能够运用这个快捷键了
3.R.swift
没错,不是RxSwift,也是不ReSwift。R.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