前语

之前,咱们在探求动画及烘托相关原理的时分,咱们输出了几篇文章,回答了iOS动画是怎么烘托,特效是怎么作业的疑惑。咱们深感体系设计者在创造这些体系结构的时分,是如此脑洞大开,也 深深意识到了解一门技能的底层原理对于从事该方面作业的重要性。

因而咱们决定 进一步探求iOS底层原理的任务,并以本文作为总述,对各个底层原理探求的模块进行概要总结,从而引出各个子模块底层原理探求的分述(胪陈)

一、概述

1.目前开发iOS客户端的技能栈

咱们现在开发iOS使用的技能栈计划大概有几种:

  • Native原生(以OC、Swift为主,一起支撑C、CPP、OC、Swift等混编)
  • 跨渠道开发
  • Hybrid(Native+跨渠道技能) 咱们本次探求iOS底层原理关注的要点是原生技能栈中的OC、Swift两门言语相关底层原理,不对跨渠道计划、Hybrid开发计划中涉及到的其它技能栈进行打开评论

2.探求体系底层原理的前常识

咱们探求底层原理,实质上是探求Native环境下,编程言语 表层语法的底层完成 ,包含数据结构与算法的完成 和 相关的运作机制等。

因而,咱们探求底层原理便是要掌握核算机程序的整个作业进程、在作业进程中不同的阶段的进程表达物等。

为了探求这些底层作业进程,以及了解相关的进程产品,咱们也需求掌握与之相关的前常识。具备探求底层原理的才能,掌握探求底层原理的几种手法

3.探求体系底层原理的全体篇幅

因而,咱们探求iOS底层原理必然有三大块需求评论:

    1. 了解核算机程序作业的原理
    1. 探求底层原理的前常识
    1. 根据OC言语探求iOS底层原理
    1. 根据Swift言语探求iOS底层原理

二、 了解核算机程序作业的原理

1.了解核算机程序作业的进程

之前,在从头了解核算机编译原理的时分,咱们曾简略介绍过核算机程序的根本进程。也别离介绍了几种编译型言语,编译型言语编写的程序在编译阶段的几个作业流程,若您对 程序编译 了解甚少,能够简略从我的这篇文章对其有一个根本的知道:核算机编译原理

核算机程序作业的根本进程:

01-探究iOS底层原理|综述

  • 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在编译器作业的进程根本描绘:

01-探究iOS底层原理|综述
高级言语(OC/Swift)–>编译器前端(Clang/SwiftC)–>优化器–>编译器后端(LLVM)–>对应架构(x86、ARM64、armv7)的可履行文件,二进制程序包

4.窥视核算机程序底层的几种办法

从前面的介绍咱们得知,咱们能够通过汇编窥视体系的底层原理。当然,咱们也能够阅览体系开源体系底层源码来窥视原理。
总结:探求底层原理的办法大概有两种:

  1. 阅览源码(依靠于官方对体系库的开源)
  2. 汇编

在探求底层原理进程中,咱们必须掌握必定的前常识,才具备探求底层原理的手法。因而,咱们也需求对相关的前常识有必定的了解:

  • 编译链、编译器、汇编指令、寄存器
    • 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多态原理StringArrayDictionary引证计数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-小程序结构烘托原理

移动大前端沟通社区

最近和朋友们建了个微信群,欢迎各路喜爱 移动大前端开发的 同学们 参加咱们,一起沟通,共同进步

01-探究iOS底层原理|综述