前语
之前,咱们在探求动画及烘托相关原理的时分,咱们输出了几篇文章,回答了
iOS动画是怎么烘托,特效是怎么作业的疑惑
。咱们深感体系设计者在创造这些体系结构的时分,是如此脑洞大开,也深深意识到了解一门技能的底层原理对于从事该方面作业的重要性。
因而咱们决定
进一步探求iOS底层原理的任务
,并以本文作为总述,对各个底层原理探求的模块
进行概要总结,从而引出各个子模块底层原理探求的分述(胪陈)
一、概述
1.目前开发iOS客户端的技能栈
咱们现在开发iOS使用的技能栈计划大概有几种:
- Native原生(
以OC、Swift为主
,一起支撑C、CPP、OC、Swift等混编) - 跨渠道开发
- Hybrid(Native+跨渠道技能)
咱们本次
探求iOS底层原理
关注的要点是原生技能栈中的OC、Swift
两门言语相关底层原理,不对跨渠道计划、Hybrid开发计划中涉及到的其它技能栈进行打开评论
2.探求体系底层原理的前常识
咱们探求底层原理,实质上是探求Native环境下,编程言语 表层语法的底层完成
,包含数据结构与算法的完成 和 相关的运作机制等。
因而,咱们探求底层原理便是要掌握核算机程序的整个作业进程、在作业进程中不同的阶段的进程表达物
等。
为了探求这些底层作业进程,以及了解相关的进程产品,咱们也需求掌握与之相关的前常识。具备探求底层原理的才能
,掌握探求底层原理的几种手法
。
3.探求体系底层原理的全体篇幅
因而,咱们探求iOS底层原理必然有三大块需求评论:
-
了解核算机程序作业的原理
-
探求底层原理的前常识
-
根据OC言语探求iOS底层原理
-
根据Swift言语探求iOS底层原理
二、 了解核算机程序作业的原理
1.了解核算机程序作业的进程
之前,在从头了解核算机编译原理的时分,咱们曾简略介绍过核算机程序的根本进程。也别离介绍了几种编译型言语,编译型言语编写的程序在编译阶段的几个作业流程,若您对 程序编译 了解甚少,能够简略从我的这篇文章对其有一个根本的知道:核算机编译原理
核算机程序作业的根本进程:
- 1.在日常开发进程中,程序员编写的程序一般采用高级言语编写,然后存放在硬盘
- 2.当咱们在IDE中 运行 编写好的程序 ,程序就会通过编译,生成二进制可履行文件 装载到内存
- 3.二进制程序在内存中运行,一般都有根据该类型高级言语编写的履行环境,如Java的JVM、OC/Swift的runtime、Node.js的Node、运行在Chrome中的H5其运行环境Chrome的V8引擎、运行在Safari中的H5其运行环境Safari的JavaScriptCore……
- 4.二进制程序在内存中运行进程中,其核算和操控一般由CPU处理,若有关于图形界面处理的逻辑,还会牵扯到GPU
- 5.二进制程序能够通过CPU操控核算机的硬件器件:显示器、音响、键盘、话筒、蓝牙等….
从前面介绍的常识,咱们能够了解到 从核算机程序编写,到其二进制程序 的根本作业的进程。由此,咱们得知,要去深入了解一个体系的底层原理,需求进一步知道编译进程
。
2.编译
从我的这篇文章核算机编译原理咱们能够知道,编译需求了解 编译器
(编译器前端、优化器、编译器后端);
并且,编译器
的进程产品中间代码
由 汇编指令
、寄存器
等参加作业。要探求底层原理,咱们也需求去知道 上述 几个概念 和相关的常识。
由核算机功底的朋友必定知道,汇编指令
、寄存器
等 编译进程
是极端 依靠 硬件环境的,比方Win、Mac、iOS、Android 、Unix等体系,他们的 编译进程
都相似,但是汇编指令
、寄存器
却不太相同。对于同一款硬件的操作体系,64位体系、32位体系等的寄存器
表达也有必定的差异。
因而,咱们只需求针对不同的硬件环境
去学习相关的常识点就能够了。当然了,若您是一位喜爱研究底层的优秀选手,也能够凭借个人兴趣去探求一下不同渠道的编译
。
3.了解iOS程序作业的进程
做iOS开发的同学们都知道,咱们通过OC/Swift
编写出来的iOS体系的程序,会通过苹果IDE-Xcode
编译
,最后输出 二进制程序 文件: ipa包
。
通过前面的介绍,咱们不难得知,咱们窥视iOS底层原理的进程中,要点关注整个编译进程即可。
下图是关于iOS的两种言语:Swift、OC在编译器作业的进程根本描绘:
高级言语(OC/Swift)–>编译器前端(Clang/SwiftC)–>优化器–>编译器后端(LLVM)–>对应架构(x86、ARM64、armv7)的可履行文件,二进制程序包
4.窥视核算机程序底层的几种办法
从前面的介绍咱们得知,咱们能够通过汇编
窥视体系的底层原理。当然,咱们也能够阅览体系开源的 体系底层源码
来窥视原理。
总结:探求底层原理的办法大概有两种:
-
阅览源码
(依靠于官方对体系库的开源) 汇编
在探求底层原理进程中,咱们必须掌握必定的前常识,才具备探求底层原理的手法。因而,咱们也需求对相关的前常识有必定的了解:
-
编译链、编译器、汇编指令、寄存器
- LLVM项目
- 编译器前端:Clang&&SwiftC
- 编译器后端LLVM
- 汇编
x86汇编
ARM汇编
- LLDB
三、 根据OC言语探求iOS底层原理
咱们的面向目标言语OC
的类,都是继承自NSObject,并且OC
言语有很多其本身的语法。因而,咱们窥视OC言语
底层原理也是根本环绕 OC语法
、OC的基类
来窥视的。
咱们会环绕以下几个常识点进行底层原理的探求:
- OC的实质
- OC目标的实质(Objective-C中的目标,简称OC目标,主要能够分为3种 )
-
OC目标的分类
- instance目标(实例目标)
- class目标(类目标)
- Class的底层结构
- meta-class目标(元类目标)
- isa指针
- KVO
- KVC
- Category
- Block
- 关联目标
- Runtime
- RunLoop
- 多线程
- 内存办理
四、 根据Swift言语探求iOS底层原理
同样的,咱们探求Swift
言语的底层原理,也是环绕其语法特性
和一些常用类
打开的!
咱们会环绕以下几个常识点进行底层原理的探求:
- 内联优化
- 枚举
- 结构体、类
- 闭包
- 特点、办法、下标、继承
- 多态原理、init
- String
- Array
总结
通过通篇介绍,咱们了解了核算机程序作业的根本进程,了解到咱们探求底层原理 要去 对 编译进程 有必定的知道。了解到,探求iOS底层原理,是环绕 言语的 一些基类 、语法特性、运行时环境展开的。因而,咱们接下来有以下篇幅,打开对底层原理的窥视:
专题系列文章
1.前常识
- 01-探求iOS底层原理|总述
- 02-探求iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器、LLVM】
- 03-探求iOS底层原理|LLDB
- 04-探求iOS底层原理|ARM64汇编
2. 根据OC言语探求iOS底层原理
- 05-探求iOS底层原理|OC的实质
- 06-探求iOS底层原理|OC目标的实质
- 07-探求iOS底层原理|几种OC目标【实例目标、类目标、元类】、目标的isa指针、superclass、目标的办法调用、Class的底层实质
- 08-探求iOS底层原理|Category底层结构、App启动时Class与Category装载进程、load 和 initialize 履行、关联目标
- 09-探求iOS底层原理|KVO
- 10-探求iOS底层原理|KVC
- 11-探求iOS底层原理|探求Block的实质|【Block的数据类型(实质)与内存布局、变量捕获、Block的种类、内存办理、Block的修饰符、循环引证】
- 12-探求iOS底层原理|Runtime1【isa详解、class的结构、办法缓存cache_t】
- 13-探求iOS底层原理|Runtime2【消息处理(发送、转发)&&动态办法解析、super的实质】
- 14-探求iOS底层原理|Runtime3【Runtime的相关使用】
- 15-探求iOS底层原理|RunLoop【两种RunloopMode、RunLoopMode中的Source0、Source1、Timer、Observer】
- 16-探求iOS底层原理|RunLoop的使用
- 17-探求iOS底层原理|多线程技能的底层原理【GCD源码剖析1:主行列、串行行列&&并行行列、全局并发行列】
- 18-探求iOS底层原理|多线程技能【GCD源码剖析1:dispatch_get_global_queue与dispatch_(a)sync、单例、线程死锁】
- 19-探求iOS底层原理|多线程技能【GCD源码剖析2:栅栏函数dispatch_barrier_(a)sync、信号量dispatch_semaphore】
- 20-探求iOS底层原理|多线程技能【GCD源码剖析3:线程调度组dispatch_group、事件源dispatch Source】
- 21-探求iOS底层原理|多线程技能【线程锁:自旋锁、互斥锁、递归锁】
- 22-探求iOS底层原理|多线程技能【原子锁atomic、gcd Timer、NSTimer、CADisplayLink】
- 23-探求iOS底层原理|内存办理【Mach-O文件、Tagged Pointer、目标的内存办理、copy、引证计数、weak指针、autorelease
3. 根据Swift言语探求iOS底层原理
关于函数
、枚举
、可选项
、结构体
、类
、闭包
、特点
、办法
、swift多态原理
、String
、Array
、Dictionary
、引证计数
、MetaData
等Swift根本语法和相关的底层原理文章有如下几篇:
- Swift5中心语法1-基础语法
- Swift5中心语法2-面向目标语法1
- Swift5中心语法2-面向目标语法2
- Swift5常用中心语法3-其它常用语法
- Swift5使用实践常用技能点
其它底层原理专题
1.底层原理相关专题
- 01-核算机原理|核算机图形烘托原理这篇文章
- 02-核算机原理|移动终端屏幕成像与卡顿
2.iOS相关专题
- 01-iOS底层原理|iOS的各个烘托结构以及iOS图层烘托原理
- 02-iOS底层原理|iOS动画烘托原理
- 03-iOS底层原理|iOS OffScreen Rendering 离屏烘托原理
- 04-iOS底层原理|因CPU、GPU资源耗费导致卡顿的原因和解决计划
3.webApp相关专题
- 01-Web和类RN大前端的烘托原理
4.跨渠道开发计划相关专题
- 01-Flutter页面烘托原理
5.阶段性总结:Native、WebApp、跨渠道开发三种计划性能比较
- 01-Native、WebApp、跨渠道开发三种计划性能比较
6.Android、HarmonyOS页面烘托专题
- 01-Android页面烘托原理
-
02-HarmonyOS页面烘托原理 (
待输出
)
7.小程序页面烘托专题
- 01-小程序结构烘托原理
移动大前端沟通社区
最近和朋友们建了个微信群,欢迎各路喜爱 移动大前端开发的 同学们 参加咱们,一起沟通,共同进步