前言

之前,我们在探索动画及渲染相关原理的时候,我们输出了几篇文章,解答了iOS动画是如何渲染,特效是如何工作的疑惑。我们深感系统设计者在创作这些系统框架的时候,是如此脑洞大开,也 深深意识到了解一门技术的底层原理对于从事该方面工作的重要性。 因此我们决定 进一步探究iOS底层原理的任务,并以本文作为综述,对各个底层原理探究的模块进行概要总结,从而引出各个子模块底层原理探究的分述(详述)

此前,在探索动画及渲染相关原理的几篇输出文章如下:

前知识:

  • 为了了解成员变量和局部变量区别iOS系统的图像渲染原理,我们首先要对计算机图形渲染原理有一定了解,因此我们输出了两篇文章:
  • 01-计算机原理|计算机图形渲染原理
  • 02-计算机原理|移动终端屏幕成像与卡顿

基于前知识,开源矿工我们进一步了解到了iOS的成苹果因不送充电器被判赔7000元像原理:03-电脑开不了机iOS的各个渲染框开源矿工架以及iOS图层渲染原理

在前成员变量和局部变量区别面几篇文章知识铺垫的基础上,我们最终了解到了iOS动画渲染的过程及其原理

最后,我们还基于环式学习法的理念,苹果手机怎么录屏探索了相关的几个问题:iOS OffScreen Rendering 离屏渲染原理、iOS页面卡顿原理以及相应的稳定性治开源节流

我们此次探索底层原理总共将会输出(29篇文章):

  • 01-探究iOS底层原理|综述
  • 02-探究iOS底层原理|编译器LLVM项目【Clang、SwiftC、优化器软件技术、LLVM】
  • 03-探究iOS底层原理|LLDB(待输出)
  • 04软件工程专业-探究iOS底层原理|ARM64汇编(待输出成员变量)
  • 05-探究iOS底层原理|OC的本质
  • 06-探究iOS底层原理|OC对象的本质(待输出)
  • 07-探究iOS底层原理|OC对象的分类 (待输出)
  • 08-探究iOS底层原理|isa指针 (待输出)
  • 09-探究iOS底层原理|KVO开源众包 (待输出)
  • 10-探究iOS底层原理|KVC (待输出)
  • 11-探究iOS底开源阅读层原理|Category(待输出)
  • 12-探究iOS底层原理|Block(待输出)
  • 13-探苹果13究iOS底层原理|关联对象(待输出)
  • 14-探究iOS底层原理|Runtime(待输出)
  • 15-探究iOS底层原理|RunLoop(待输出)
  • 16-探究iOS底层原理|多线程(待输出)
  • 17-探究iOS底层原理|内存管理(待输出)
  • 18-探究iOS底层原理|Swift-函数(待输出)
  • 19-探究iO开源节流S底层原理|Swift-枚举(待输出)
  • 20-探究iOS底层原理|Swift-可选项(待输出)
  • 21-探究iOS底层原理|Swift-结构体、类 (待输出)
  • 22-探究iOS底层原理|Swift-闭包软件技术 (待输出)
  • 23-探究iOS底层原理|Swift-属性、方法(待输出)
  • 24-探究iOS底层原理|Swift-多态原理(待输出)
  • 25-探究iOS底层原理|Swift-String(待输出)
  • 26-探究iOS底层原理|Swift-Array (待输出)
  • 27-探究iOS底层原理|Swift-Dictionary(待输出)
  • 28-探究iOS底层原理|Swift-引用计数(待输出)
  • 29-探究iOS底层原理|Swift-MetaData(待输出)

一、概述

我们在这篇文章(探究iOS底层原理|综述)上曾提到,探索iOS底层原理,是需要在掌握一定的前电脑怎么重装系统知识的情况下,针对Native开发的编程语言:OCSwift 分别探索其底层原理的,且介绍了探索底层原理的方式有两种:1.基于汇编2.基于源码。我们在本文将开始针对Objective-C开展底层原理的探索。
本文首先探苹果官网Objec开源是什么意思tive-C语言的本软件工程师质,然后再一步一步针对Objective-C语言的语法,围绕其底层设计与内存布局等去探索底层原理!

二、Objective-C简介

1.OC语言简介

Objective-C是一种通用、高级、面向对象的编程语言。它扩展了标准的ANSI C编程语言,将Smalltalk式的消息传递机制电脑锁屏快捷键加入到ANSI C中。目前主要支持的编译器有GCC和Clang(采用LLVM作为后端)。

现在Objective-软件技术专业C与电脑Swift是OS X和iOS操作系统、及与其相关的AP成员变量有没有默认值I、Cocoa和Cocoa Touch的主要编程语言[3]。

对OC语言更详细的介绍可以参考维基百科: Objective-C

2.OC语言的历史

Objective-C 主要由 Stepstone公司的 布莱德考克斯软件技术(Brad Cox)和汤姆洛夫(Tom Love) 在 1980 年代发明。

1981年 Brad Cox 和 Tom Love 还在ITT 公司 技术中心任职时,接触到了Sma苹果官网llTalk语言。Cox 当时对软件设计和开发问题非常感兴趣,他很快地意识到SmallTalk语言在系统工程构建中具有无法估量的价值,但同时他和 Tom Love 也明白,目前ITT 公司 的电子通信工程相关技术中,C 语言被放在很重要的位置。

于是电脑黑屏却开着机 Cox 撰写了一个 C 语言的预处理器,打算使 C 语言具备些许 Smalltalk 的本领。Cox 很快地实现了一个可用的 C 语言扩苹果x软件库,此开源节流是什么意思即为 Objective-C语开源软件言的前身。到了 1983 年,Cox 与 Love 合开源阅读伙成立了 Producti电脑安全模式vity Products International(PPI)公司,将 Obje电脑ctive-C 及其相关库商品化贩售,并在之后将公司改名为Ste开源代码网站githubpStone。1986年,Cox苹果13 出版了一本关于 Objecti软件工程ve-C 的重要著作《Object-Oriented Programming苹果, An Evolutionary Approach》,书内详述了 Objective-C 的种种设计理念。

1988年,斯蒂夫乔布斯 (Stev苹果8e Jobs成员变量是什么意思)离开苹果公司后成立了NeXT Computer公司开源是什么意思,NeXT 公司买下 Objective-C 语言的授权,并扩展了著名的开源编译器GCC使之支持 Objective-C 的编译,基于 Objective-C 开发了AppKitFoundation Kit等库,作为 NeXTSTEP开源矿工 的的用户界面与开发环境的电脑快捷键基础。虽然 NeXT 工作站后来在软件市场上失败了,但 NeXT 上的软件工具却在业界中被广泛赞扬。这促使 NeXT 公司放弃硬件业务,转型为销苹果手机怎么录屏售NeXTStep(以及OpenStep)平台为主的软件公司电脑锁屏快捷键

1992年,自由软件基金会的 GNU 开发环境增加了电脑快捷键对 Objective-C 的支持。1994年,NeXT Computer公司和Sun Microsystem联合发布了一个针对 NEXTSTEP 系统的标准典范,名为 OPENSTEP。OPENSTEP 在自由软件基金会的实现名称为 GNUstep。1996年12月20日,苹果公司 宣布收购 NeXT Software 公司,NEXTSTEP/OPENSTEP环境成为苹果操作系统下一个主要发行版本OS X的基础。这个开发环境的版本被苹果公司称为Cocoa

2005年,苹果电脑雇用了克里斯拉开源代码网站github特纳“克里斯拉特纳”)及LLVM开发团队,ClangLLVM成为苹果公司在GCC之外的新编译器选择,在Xcode4.0之后均采用 LLVM 作为默认的编译器。最新的 Modern Objective-C 特性也都率先在 Clang 上实现。

3.苹果官方开源矿工对Obj开源中国ective-C的介绍

05-探究iOS底层原理|OC的本质

它第一段落 表达的意思就是:

  • Objective-C是程序员在为OS X和iOS编写软件时使用的主要编程语言(之一,现在已经还有Swift语言)。
  • 是C编程语言的超集,提供面向对象的功能和动态运行时。
  • Objective-C继承了C语言的语法基本类型流控制语句,并添加了用于定义类和方法的语法。(OC完全兼容标准C软件语言)
  • 它还增开源加了面向对象管理和对象字面量的语言级别支持,同时提供动态类型和绑定,将许多责任推迟到运行时

官方的其余介绍可以访问:官方苹果12地址

4.Objective-C语言的变化

1. Objective-C++

Objective-C++是G苹果CC的一个前端,它可以编译混合了C++与Objective-苹果7C语法的源文件。Objective-C++是C++的扩展,类似于Objective-C是C的扩展。由于在融合C++与Objective-C两种语言的特性方面没有做特别的工作,因此有以下限制:

  • C++类不能从Objective-C类继承,反之亦然。
  • Objective-C定义内部不能定义C++名字空苹果x间。
  • Objective-C类的成员变量不能包括不含默开源众包认构造函数和/或含有虚方法的C++类对象,但使用C++类指针并无如此限制(可以在 -init方法中对之进行初成员变量和静态变量的区别始化)成员变量和局部变量
  • C软件工程专业++“传递值”的特性不能用在Ob成员变量和局部变量区别jective-C对象上,而只能传递其指针。
  • Object电脑锁屏快捷键ive-C声明不能存在在C++模板声开源代码网站github明中,反之亦然。但电脑截图快捷键Objective-C类型可以用在C++模板的参数中。
  • Objective-C和C++的错误处理语句不同,各自的语句只能处理各自的错误。
  • Objective-C错误使得C++对象被退出时,C++析构函数不会被调用。苹果手机新的64位运行时解决了这个软件技术问题。[6]

Objective-C++ 的 出现 使得 Native iOS 的底层中 包含了 C++的实现

2. Objective-C 2.0

在2006年7月苹果全成员变量是什么意思球开发者成员变量有没有默认值会议中,Apple宣布了“苹果7Objective-C 2.电脑截图0”的电脑黑屏却开着机发布,其增加了“现代的垃圾收集,语法改进,运行时性能改进,以及64位支持”。2007年10月发布的Mac OS X v苹果710.5中包含了Objective-C 2.0的编译器

5.总结

  • Obj苹果ective-C 的底层 为 C 语言 的扩展开源阅读,完全支持标准 C
  • Objective-C++ 底层成员变量 为 C+成员变量是什么意思+ 的成员变量和局部变量扩展
  • 我们通常可以概括为:OC(包含Objective-C、电脑Objective-C++)的底层实现就是 C、C++

三、了解OC语言的设计

我们从前面的篇幅可以知道,OC在承继了 C语言 的 语法、基本类型、流程控制 之外,提供了面向对象、运行时特性、类和对象的语法,提供了消息机制等。
而我们也可以软件工程专业通过IDE看到部分objc系统库包中,开源代码网站github开放的一些头文件。

05-探究iOS底层原理|OC的本质

05-探究iOS底层原理|OC的本质

虽然,Objective-C是一门闭源的语言,但官方也对该软件库语言有了适当的开源。我们通常可以通过改地址去查找苹果官方开源的一开源节流是什么意思些源码:opensource.apple.com/软件开发tarballs/

05-探究iOS底层原理|OC的本质

我们全局搜索 objc,可以找到objc4,然后下载最新的开源版本代码即可

05-探究iOS底层原理|OC的本质

我们从官方开源的代码中也可以看到,OC底层的实现:

05-探究iOS底层原理|OC的本质
(Tips:以.mm为后缀的文件,是C++语言的实现文件)

探索到这里,我们也得知,若是我们要去探索iOS底层原理,需要具备 C、C++语言的一定功底

未深入探索的问题

我们在前面了解到 O软件开发C 底层实现电脑怎么录屏的技术栈,也下载到了官方开源的代码,但是并未拓展开来介绍官方开源代码。对OC语言的设计细节,若是同学们感兴趣,可以自行下载官方开源的代码,针对自己想了解的部分去阅读。本文不铺展开来一一介绍所有的开源代码,仅作为一个引子,为后面的几篇文章中,若探索底层原理有需要才会针对特定源码进行探索。

总结

通过通篇介绍,我们了解了 OC语电脑开不了机言的 基本特点、发展历史、以及底层实现技术栈。本文将作为一个引子,支撑我们接下来对底层原理探索:

专题系列文章

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对象的分类 (待输出)
  • 08-探究iOS底层原理|isa指针 (待输出)
  • 09-探究iOS底层原理|KVO (待输出)
  • 10-探究i苹果xOS底层原理|KVC (待输出)
  • 11-探究iOS底开源阅读app下载安装层原理|Category(待输出)
  • 12-探究iOS底层原理|Block(待输出)
  • 13-探究iOS底层原理|关联对象(待输出)
  • 14-探究iOS底层原理|Runtime(待输出)
  • 15-探究iOS底层原理|RunLoop(待输出)
  • 16-探究iOS底层原理|多线程(待输出)
  • 17-探究iOS底层原理|内存管理(待输出)

3. 基于Swift语言探索iOS底层原理

  • 1软件技术专业8-探究iOS底层原理|Swift-函数(待输出)
  • 19苹果官网-探究iOS底层原理|Sw软件技术ift-枚举(待输出)
  • 20-探究iOS底层原理|Swift-可选项(待输出)
  • 21-探究iOS底层原理|Swift-结构体、类 (待输出)
  • 22-探究iOS底层原理|Swift-闭包 (待输出)
  • 23-探究iOS电脑底层原理|Swift-属性、方法(待输出)
  • 24-探究iOS底层原理|Swift-多态原软件工程师(待输出)
  • 25-探究iOS底层原理|Swift-String(待输出)
  • 26-探究iOS底层原理|Swift-Array (待输出)
  • 27-探究iOS底层原理|Sw软件库ift-Dictiona软件工程ry(待输出)
  • 28-探究iOS底层原理|Swift-引用计数(待输出)
  • 29-探究iOS底层原理|Swift-Me成员变量和局部变量taData(待输出)

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-小程序框架渲染原理