因为工作关系,差不多苹果刚开始推swift的时候,就已经开始不怎么写objc的东西了,即便有接触,改动其中C++的部分仍然是主要的,之后有大概8个月的时间都在整理项目需求,和处理基于SWOOLE的php问题。
现在又是工作原因,需要回来写objc,折腾了快一个月,毕竟这八个月也学了很多很多别的东西,虽然我更看好swift,但时间关系短期内还是要写很多objc的东西,就记录一下咯。
早已不是当年对插件保持拒绝状态的骚年,工具什么的,当然是越舒服越好,当年第一次写objc还是ios4.3的时候,还没有ARC,觉得XCODE简直是渣哇一样的工具,实在烂的不行,oc的语法也是各种奇葩。。。然后各种恶心,当然,现在来看还是有它的优点的,ide也优化了不少。。至少提词靠谱了很多。
方便的插件管理工具,安装以后使用CMD+SHIFT+9唤醒,然后就可以很方便安装绝大多数常用插件了。表示从
快速处理导致项目报错的缓存(至少我是这么理解的。。)
支持缩写的代码提示(必须说。。这东西vs没记错是09好像就提供了。。ide来说我只服vs)
可以在输入@”“时弹出一个输入框,直接在里边排版,然后自动补上/n的符号。
很方便的东西,但实际上用到的机会不多。
在调用ImageNamed方法是,提供可选的名字预览、快速选择,以及图片预览。
这个东西我给82分,剩下的以666给。
使用option+click点击官方的api时,会打开dash来查看api。
极度实用的东西,折腾头文件最烦的一点就是拖动到文件的开头,import一下,然后又拖会刚才编辑的位置,一来二去,又浪费时间,又打断思路。
使用ctrl+command+p快速选择并录入import。
如果有个工具可以快速移除没有用到的头文件就更好了(goimports的后遗症,btw我觉得go这种设计纯XX)
在做本地话的时候帮我们自动填充第二个参数。
还是很好用的=。=
右侧的略缩地图,应该不用多介绍了。
快速生成结构注释的工具,在例如函数开头输入///之后,自动生成可以被xcode的tips解析的注释。
VS自带的东西。
自动实现声明的方法(这种功能居然没有。。。)
以前的年代,输入@的时候就可以有提示,现在居然还要用插件=。=
Peckham类似,从介绍看好像更好用一些,先研究一下。
使用⌘ + ctrl + H 唤醒,可以根据当前选中的文本自动导入,也可以继续手动输入,而且会把class、protocol、category标注出来
默认的高亮有点不显眼=。=
考虑到oc的一些自动布局其实并不好看。。慎用
我也想不懂为啥默认显示issue的时候总要打省略号。。。完整的显示还要靠悬浮窗
省略掉了使用终端的步骤。。右键唤醒。
给UIColor或者NSColor添加实时的预览。
使用cmd+shift+-快速为你选中的属性添加一个lazy的获取方法。
在边缘高亮标志出被修改了行(终于找到这玩意了。。)
对临时注释的代码仍然尝试进行排版。
尝试绘制当前项目的类关系图(依赖图)
程序员鼓励师···
几个功能,首先是Re-indent自动排版当前文件(等价全选然后ctrl+i),Shift+Command+\;
然后是Getter replacer,根据自己的设置自动生成getter方法。
Regex replacer,根据设置的正则做替换。
顾名思义。。
快捷键alt+f
自动根据3x的图像生成2x或者1x,或者从2x放大出3x。。
其实不是什么大事但能自动处理这种破事总是好的。
当switch一个枚举的时候,自动帮你把所有枚举值都列出来。
又是一个管理本地字符串的东西。。这东西要自己写源码其实是个很麻烦的事情。
更方便的整理本地化的字符串。
显然,很多时候是没必要再去造个新轮子的(显然,当年的我是造了不少轮子=。=)
作为NuGet、go(install)、composer、yum(brew、zypper、apt-get)等工具的用户,三方库的管理也早已不希望像以前一样,引入个zxing调试了差不多一个星期(QAQ)这种问题,这个时候就可以用pod了,类似composer(原谅我还是很喜欢php)。没记错的话是一个用Ruby写的工具,可以用gem来安装,但mac的安全功能会限制默认的安装目录,用-i命令调整到(/usr/local/bin)就好。
毕竟iPhone的尺寸变多了,以前只要适配两种屏幕,哪怕写两套尺寸也问题不是很大。
布局库,多的不说,我对其最大的好感就是利用了block的特性,将传统的objc func调用方式改进成为C风格的函数调用方式,这样做的最大好处在于,objc的原生语法并不适合用于执行连贯操作,我妄自揣测是因为设计者希望用户谨守“不要和陌生人说话”的编码原则。
但毕竟特定场景下,连贯操作有其非常大的优点,就是清晰简单明了(因为使用者都默认了某些编码原则)。
例如oc自带的设置layout的方法(既不好看也不好写,太罗嗦了,哪怕描述很完整)。
PS:可以尝试以xib为主,masonry为辅的编码方式
以前制作Cell的时候最麻烦的就是要测算Cell的高度,特别是希望使用autolayout的时候,配合masonry使用简直perfect!
备注一下自己踩的坑,与普通的cell写法不同,使用registry方法注册了cell以后,在dequeue的时候会自动根据identify以及cell pool的情况,自动调用构造函数,而不再需要if(cell==nil) cell =[ [alloc]init]
在github挖出来的一套非常丰富的工具库,涉及多线程、图片、网络图片、缓存、文本等方面,各种基础控件自带异步属性,可以有效降低界面的卡顿。
简单说用这个可以省很多事。
非死不可提供的快速处理KVO的工具(之前不知道,准备用),吐槽一句,传统的delegate+protocol的写法实在太笨重也太啰嗦了,但ios的库大量都是这种写法,当然我不是说用block,但block一样可以写成d+p的形式,但又可以处理一些轻量级的问题,代码质量完全看个人了,优雅的代码应该是灵活又符合实际的(人多了这点似乎很难做到,毕竟审美差异,还是CTO出文档吧)
非死不可提供的控件库(暂时没遇到性能问题,先马克),可以极大的减少对主UI线程的阻塞。
非死不可提供的动画库(暂时没用到)
网络库。
允许在app调试时直接修改控件的属性,快速调整UI。。(似乎是这么个东西,还没用到)
简化runtime的处理。
一些常见的UI效果也有人给我们实现好了,自己做没太大必要,与前边的工具库区分开来。
一个功能齐全的下拉\上拉刷新库,既有默认的一些效果,也允许自定义。
丰富的分段选择控件,但似乎没法动态的删改(不确定,没花太多时间研究)
折腾我折腾的够呛的抽屉效果控件,丰富的可选控制选项。