简介
当前的时间节点,国外Swift已经占主流;国内,正处于从Objective-C向Swift逐步过渡的时期。
所以,工作中用Objective-C,同时Swift边学边做,算是一个方法。
当然,有把握的,直接过渡到Swift也是好的。适应的时间大约也就一个星期半个月的样子。再不济的,一个月的适应时间肯定是够了。从Objective-C切换到Swift,除了编码习惯要变之外,第三方库的选择也要变一变。当然,这些库是可以通用的,但是,选用相同语言的总感觉要好一些。
说到第三方库,就会想到CocoaPods,在Objective-C的语境下,几乎是必选的。不过在Swift的情况下,XCode自带的Swift Package Manager就可以考虑。另外,Carthage也是选项之一。
目前,Swift语境下,首先使用XCode自带的Swift Package Manager。Carthage在这么多年的竞争下已经落败,意义不大。CocoaPods每次用都要出幺蛾子,早就想扔了。
Objective-C
网络库
一开始的时候还有两三个选择,目前基本都选这个:
AFNetworking二次封装的网络库,有兴趣可以考虑采用。本人不选,就像weex对RN的二次封装差不多。
YTKNetwork
图片加载
展示网络图片几乎每个APP都需要,基本上也都选这个:
SDWebImage另外YYWebImage也是很不错的,只是SDWebImage更流行,所以这个可以作为备选。
自动布局
- 苹果提供的相对布局API很难用,新创的布局语言更是扯淡。这个第三方提供的方法符合人性,几乎是默认选项
Masonry
HUD
俗称小转转,这里有好多个选择,这里选Star最多的(相信潮流的选择)
MBProgressHUD下面这个也很好用,Star也很多,给的API更直白。
SVProgressHUD只要有网络请求,这个几乎是必须的,自己写没必要,选择一个主流的第三方库是很好的方式。
与JS交互
在大前端如火如荼的现在,原生+H5的混合架构仍然是主流。原生与H5的交互框架一直以来就只有下面这个占主流。
WebViewJavascriptBridge
字典转模型
本地数据是对象模型,网络数据格式基本上是JSON,所以字典转模型也是强需求
本人比较喜欢# YYModel
,项目中也一直在用,感觉很不错,也没有换的意思。MJExtension 也是非常好用的一个库,Star数量更多,更流行。
两者实现的原理是不一样的,有人做过测试,比如下面的文章:
iOS源码阅读 —— YYModel vs MJExtension
表格刷新
表格的使用率很高,下拉刷新,上拉加载经常用到,基本上都用下面这个:
MJRefresh
表格空白
如果网络异常,或者出错,或者没数据,展示什么呢?空白页肯定不合适,这种情况还是很普遍的。这里也要一个几乎是默认的:
DZNEmptyDataSet
本地缓存
系统提供NSDefault性能不是很好,功能也差,限制也多,不是很好用。序列化还需要编码解码写一堆代码,用起来也不方便。数据库?除非必要,坚决不考虑。NSCache只是内存缓存,在iOS开发中的存在感更加低。
本地缓存还是需要的,比如自动登录,记忆选择状态等等。
一直以来就用这个,感觉很好。其他的也没有尝试过。
YYCache
富文本
点击文字跳转,某些文字高亮,部分文字特殊样式,这些需求时不时就会来。系统原生对这块支持很弱,那个属性字符串是真的差劲。
一直以来这方面的需求都用下面这个解决,非常好用,功能也强大:
YYText
Swift
如果没有特殊的,Swift可以和Objective-C用相同的第三方库
网络库
图片加载
自动布局
- 和Masonry是同一个作者,基本上是默认选项
SnapKit
HUD
与JS交互
字典转模型
基本上公认的,就用这个:
SwiftyJSON
表格刷新
表格空白
本地缓存
富文本
偶尔用到的
弹窗提示
系统提供的分为Alert和Action Sheet两种,一开始是两种view,后来合并成了Controller。基本用用是差不多了。
如果对界面有需求,一半要自定义,通常是view的形式,不会考虑Controller。经历的项目中大多数是这种情况。
现在有一些第三方库,提供的界面也比较特色,可以找几个试试。这个还是主要看UI人员怎么取舍。
这个是用Swift写的,暂时不考虑。SDCAlertView
这个虽然Star很多,色彩也算丰富,头部还带个图片。感觉跟系统的差距很大,暂时也不考虑。SCLAlertView
这个和系统的风格不一样,不过整体感觉还可以,Star也多一些,可以作为备选考虑。MMPopupView
这个和系统的风格接近,整体感觉较好。只是Strar少了一点。如果要选的话,可以考虑这个。LGAlertView