iOS-学习基础和文章推荐

文档用于更好的规划好自己的 iOS 学习, 准确的定位的目前所处的位置,以及文章的查找。

Objective-C 2.0 Swift 5.0

基础#

语言#

国内主流的 iOS开发 语言是Objective-CSwift
Objective-C 熟悉语法是基本要求,同时也需要去了解它的对象模型,动态机制等特性。
Swift 则作为现在苹果的官方推荐语言,更应该去好好的使用。

框架#

Objective-C 方面

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

`Swift 方面

  • 仍然是推荐使用苹果的基本框架:Foundation / UIKit等,但是注意避免使用Objective-C的相关内容,尽量使用SwiftFoundation内容。〖比如优先ArrayString等,少用NSArrayNSString等〗
  • Swift的开源项目也越来越丰富,推荐使用以Swift推进的开源项目: SnapKitKingfisherAlamofire 等。

网络#

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

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

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

储存#

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

内存#

内存方面,需要了解 Objective-C 的引用计数、 ARC 机制、自动释放池等相关点,另外需要注意避免内存泄露,管理好客户端的缓存,避免缓存太多导致问题,或缓存命中率太低性能低下。

渲染#

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

线程#

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

文章和博客#

组件化#

iOS 组件化方案探索

解读 iOS 组件化与路由的本质

iOS 组件化 - 私有库创建

Runloop#

解密 Runloop

iOS - Runloop

Runtime#

神经病院Objective-C Runtime出院第三天——如何正确使用Runtime

多线程#

iOS 如何高效的使用多线程

我所理解的 iOS 并发编程

iOS 多线程之线程安全

OC对象模型#

iOS底层原理总结 - 探寻OC对象的本质

Objective-C对象模型

内存管理#

iOS Memory 内存详解

Block#

我所理解的Block/

KVC\KVO#

iOS底层原理总结篇– 深入理解 KVC\KVO 实现机制

网络层设计#

谈谈 iOS 网络层设计

自己动手写一个 iOS 网络请求库

写给 iOS 开发者看的 HTTPS 指南

iOS应用架构谈 网络层设计方案

事件传递和响应#

史上最详细的iOS之事件的传递和响应机制-原理篇

实现一个优雅的iOS消息总线

混合开发#

自己动手打造基于 WKWebView 的混合开发框架

从零收拾一个hybrid框架(一)– 从选择JS通信方案开始

Hybrid 实战:如何完整下载一个 wap 页面

测试优化#

关于iOS 性能优化梳理

iOS调试进阶-更高效的使用Xcode和LLDB

APP#

iOS 签名机制

SDWebImage分析

Swif学习总结 计算机科学 - 二进制和算数逻辑单元

Comments

Your browser is out-of-date!

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

×