- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iOS 开发技术栈与进阶.doc
iOS 开发技术栈与进阶
iOS 技术栈
这里按我的理解给 iOS 相关技术分个类,以工程实现的角度,分成了基础、需求、效率、质量四个类别。基础指程序开发和 iOS 开发的基础知识和技能,需求就是产品的需求,有了基础技能,实现了产品需求后,剩下的事情就都是为了提高项目质量和提升开发效率。
大致的思维导图:
基础
基础包括语言、框架、内存、网络、存储、渲染、线程。
语言目前 iOS 开发就是 OC 和 Swift,国内仍以 OC 为主,对于 OC 除了语法外,最好了解它的对象模型,动态机制等特性。Swift 方面若要在团队里使用,目前还是风险大收益小的,但个人最好保持对它的关注。
框架就是 Foundation / UIKit 以及苹果系统封装好的各种框架,Foundation 和 UIKit 每个做 iOS 开发的人都熟知这套,iOS 功能越来越多,苹果提供的框架也越来越多,像 StoreKit / MessageUI / AVFoundation 等可以在使用到再去了解。
接着是客户端里最常见流程里的四个关键部分:从网络拉取数据,存储到本地文件系统,再从本地取出来放进内存,最后渲染出来。而这里所有的处理都在操作系统的进程和线程中执行。
网络方面若要深入的话内容很多,客户端一般只需要关心 http / https / dns 这几个协议,了解 https 的原理,处理运营商劫持 dns 劫持等情况,另外需要处理好各种异常情况做好重试机制,iOS 作为移动端网络不稳定,要看情况优化弱网络下的连接,做好离线机制,以及注意避免耗费太多流量。还有客户端跟后台的通信协议,数据结构一般用 json 或 protobuf,由于客户端本地会保存一部分内容,很多 APP 都会需要做数据的增量更新。
存储方面主要是 sqlite,sqlite 作为存储引擎是大多数 APP 的核心,也是性能优化的关键点,最基本的需要知道主键索引事务等数据库基本概念,再深入需要了解具体的存储机制/索引的实现/sqlite的七层结构等,才能在遇到问题时找到最佳的解决方案。客户端上 nosql 用得较少,除了 sqlite 一般就剩单文件存储,XML存文件或对象序列化成二进制存储,也是常用的存储方式,近期有 realm 这种新型数据库,也值得了解一下。
内存方面,需要了解 OC 的引用计数、 ARC 机制、自动释放池等相关点,最好其他语言的垃圾回收机制也有所了解,另外需要注意避免内存泄露,管理好客户端的缓存,避免缓存太多导致OOM,或缓存命中率太低性能低下。
渲染方面主要是文字和图像,基础上文字方面 UIKit 已封装得很好,CoreText也提供了更自由的排版渲染方式,图像渲染只需要注意解压时机,再深入需要了解 iOS 具体的渲染机制,像图层混合,渲染时机,离屏渲染等,才好做更多的优化。
线程和进程方面,iOS 开发只在做 Extension 时才需要考虑到进程,一般只需处理好线程,需要了解主线程子线程,多线程并发锁竞争,死锁,GCD,Runloop 等知识点。
需求
需求方面姑且概括为普通需求、特殊需求和运营需求。
普通需求就是上面提到的网络拉数据-存储-读取-展示,大多数 APP 主要都是在实现这类需求,熟悉上述的基础知识后就能轻易实现。
特殊需求是指一些特定 APP 的需求,像浏览器内核,文字排版引擎,音视频和图像处理引擎,图标绘制引擎等,要求较高,都需要在相关领域里较深入的钻研才能做好。
运营需求是 APP 上线后持续运营过程中的需求,包括功能动态化,可以随时增删改线上的功能,一般这块由内嵌 web 承担。配置系统也算动态化的一种,可以通过各种开关控制展现的功能。统计系统记录 APP 各项运营数据,包括用户增长情况,留存率,功能使用情况等。事件流可以清楚看到用户在 APP 里的使用流程。有些 APP 还会开发推荐系统,根据收集来的数据给不同用户推送不同内容,提高用户转化率等。
质量
越大的 APP 会花越多的精力在保证和提高 APP 质量上,包括性能优化,搭建监控体系,提升代码质量,保证安全,以及通过测试保证质量。
性能优化范围很大,在网络/存储/内存/渲染/算法各方面都有优化的可能,一般性能上的优化可以分成三步走,一是检测各方面的数据,量化运行性能,二是从中找到性能瓶颈,三是找办法优化,用第一步的数据验证优化效果。
监控体系在面向大众用户的产品里无论是前端后端一直都是非常重要的,你需要时刻知道用户在使用你的产品过程中有没有发生什么问题,让你的 APP 处于可知可控状态,客户端最常见的监控点是 crash,这个无需多说,另外一般对于 APP 里的错误码,包括本地错误、网络错误
文档评论(0)