首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS底层
Jason的Home
创建于2021-06-06
订阅专栏
iOS技术底层专栏
等 13 人订阅
共27篇文章
创建于2021-06-06
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
iOS底层探索-内存管理理论
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 上一篇文章我们简单介绍了可执行文件Mach-O的结构,本篇我们主要看一些内存的理论知识,从物理内存管理时代开始。 直接物理内存管理 这种加载
iOS底层探索- Mach-O文件
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 上一篇我们介绍了编译的流程,本篇我们主要看编译产物Mach-O文件的内容。 目标文件 编译器编译源代码后生成的文件就叫目标文件,Window
iOS底层探索-LLVM编译流程
我们都知道iOS的编译器是LLVM,本篇我们就探索llvm的编译流程。 解释型语言和编译型语言区别 解释型语言 解释型语言的特征是:它的执行机制是使用一个解释器来执行,解释器对程序一句一句翻译成机器语
iOS底层探索 - Block
block是我们开发经常遇到的一个结构,本篇我们就来探索一下它的结构。 block的分类 block的分类相信大家已经很清楚了,分为全局block、堆block和栈block。我们来个例子看看它们的区
iOS多线程-锁
前面几篇我们探索了iOS使用频率很高的多线程技术GCD,本篇我们探索多线程中一个重要的概念锁。 锁的分类 锁主要分为两大类自旋锁和互斥锁。 自旋锁 在自旋锁中,线程会反复检查变量是否可用。由于线程这个
iOS多线程 - GCD(三)
前两篇我们主要探索了GCD的函数和队列的调度及死锁和单例,本篇我们开始探索GCD的其他函数。 栅栏函数 栅栏函数最直接的作用是:控制任务执行顺序,同步 dispatch_battier_async 前
iOS多线程-GCD(二)
上一篇我们主要探索了GCD的主队列及串行队列与并发队列在源码上的区分,以及同步函数的调用时机。本节我们主要探索同步函数与异步函数的区别: 同步函数死锁分析 任务回调是否具有同步性、异步性 dispat
iOS多线程-GCD(一)
上一篇我们介绍了多线程的一些概念,本篇我们主要探究iOS开发中经常会使用到的多线程技术GCD。 GCD的概念 GCD 是苹果公司为多核的并行运算提出的解决方案 GCD 会自动利用更多的CPU内核(比如
iOS多线程-多线程原理
本节我们主要了解一些多线程的理论知识。 进程和线程 定义 进程 进程是指在系统中正在运行的一个应用程序。 每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内。 通过“活动监视器”可以查
iOS底层-KVO
KVO是一种机制,它允许对象在其他对象的指定属性发生更改时收到通知。它最常用的一个场景就是viewconroller中监听model属性的变化从而刷新页面展示。 KVO使用过程的细节 基本使用 con
iOS底层-KVC
KVC的全拼是Key-Value Coding,中文是键值编码。是由NSKeyValueCoding非正式协议的一种机制。对象可以间接地访问它们的属性。这种间接访问机制是实例变量及其相关访问器方法提供
Objective-C底层面试题
oc底层探索了很多了,今天主要总结一下一些相关的面试题。 load方法什么时候调用。 这个问题很多同学应该都知道,就是main函数之前,但是main之前的哪一步执行的,可能有些同学就疑惑了,,同时还有
iOS底层-类的扩展和关联对象
前面几篇我们探索了类的加载过程,本篇我们研究类相关的两个点:类的扩展和关联对象。 类扩展 clang编译 发现扩展里声明的属性和方法编译后和类中的在一起,作为类的一部分,也就是说扩展中的属性和方法在编
iOS底层-类的加载(下)
本文我们研究分类的加载流程。 分类的本质 在研究对象、类的本质的时候,我们都用clang命令将main.m转换成main.cpp文件查看其本质,分类也不例外,我们使用相同的方法分析。 首先我们定义一个
iOS底层-类的加载(中)
上一篇我们探索到了readClass函数,只是对函数名字进行了赋值,并没有对ro和rw进行操作,本篇我们就继续探索_read_images函数剩下的调用。 realizeClass的引入 因为我们探索
iOS底层-类的加载(上)
上一篇我们主要探索了dyld的链接加载,本篇开始我们探索运行时类的加载过程,本篇只是引子。 _objc_init 我们可以看到,_objc_init主要是执行一些初始化方法,包括 environ_in
iOS底层 - dyld加载流程
本文我们主要探索应用程序的加载流程,也就是main方法之前,链接器都做了什么。了解这些对我们项目的启动优化有很大帮助。 编译过程和库 编译的过程 我们知道库是一种可执行文件,从源代码到可执行文件工经历
iOS底层 - 消息转发
上一篇中我们探索了消息发送找不到方法的一个流程动态方法决议,本篇探索动态方法决议也找不到imp的下一步,也就是消息转发。 和前面的流程不同的是,消息转发的源码并不在libobjc库里,而是在CFFou
iOS底层 - 动态方法决议
前面两篇文章我们探索了消息查找的流程,包括快速查找和慢速查找,本文开始探索消息查找未找到时候的处理流程。 unrecognized selector unrecognized selector是我们开
iOS底层 - objc_msgSend(下)
上一篇文章中我们探索了消息的快速查找(缓存),本文我们探索慢速查找。 汇编探索回到C++探索 上一篇我们已经知道当快速查找找不到的时候会执行到__objc_msgSend_uncached方法,我们先
下一页