iOS-学习整理基础篇

文档用于更好的规划好自己的 iOS 学习路线, 更准确的定位的目前所处的位置。

基础

语言

国内主流的 iOS开发 语言是Objective-C,而Swift仍然为一种新趋势的语言也需要时常保持关注。
Objective-C 熟悉语法是基本要求,同时也需要去了解它的对象模型,动态机制等特性。

框架

基本框架:Foundation / UIKit
苹果封装好的框架 HealthKit
各种常用的第三方框架 SDWebImage AFNNetWorking YYKit等,并熟悉其内部的实现,尽可能的做到明白一个框架是怎么实现的再去用它

网络

客户端里最常见的对于网络的使用:

  1. 从网络拉取数据,存储到本地文件系统;
  2. 再从本地取出来放进内存,最后渲染出来。
  3. 所有的处理都在操作系统的进程和线程中执行。

熟悉http / https / dns等几个协议,了解 https 的原理,处理运营商劫持 dns 劫持等情况,另外需要处理好各种异常情况做好重试机制,iOS 作为移动端网络不稳定,要看情况优化弱网络下的连接,做好离线机制,以及注意避免耗费太多流量。还有客户端跟后台的通信协议,数据结构一般用 json 或 protobuf,由于客户端本地会保存一部分内容,很多 APP 都会需要做数据的增量更新。

储存

sqlitesqlite 作为存储引擎是大多数 APP 的核心,也是性能优化的关键点,最基本的需要知道主键索引事务等数据库基本概念,再深入需要了解具体的存储机制/索引的实现/sqlite的七层结构等,才能在遇到问题时找到最佳的解决方案。客户端上 nosql 用得较少,除了 sqlite 一般就剩单文件存储,XML存文件或对象序列化成二进制存储,也是常用的存储方式,近期有 realm 这种新型数据库,也值得了解一下。

内存

内存方面,需要了解 OC 的引用计数、 ARC 机制、自动释放池等相关点,最好其他语言的垃圾回收机制也有所了解,另外需要注意避免内存泄露,管理好客户端的缓存,避免缓存太多导致OOM,或缓存命中率太低性能低下。

渲染

渲染方面主要是文字和图像,基础上文字方面 UIKit 已封装得很好,CoreText也提供了更自由的排版渲染方式,图像渲染只需要注意解压时机,再深入需要了解 iOS 具体的渲染机制,像图层混合,渲染时机,离屏渲染等,才好做更多的优化。

线程

线程和进程方面,iOS 开发只在做 Extension 时才需要考虑到进程,一般只需处理好线程,需要了解主线程子线程,多线程并发锁竞争,死锁,GCD,Runloop 等知识点。

iOS - Runloop Objective-C对象模型

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×