首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS 探索
Ccc丶
创建于2022-06-10
订阅专栏
主要研究 iOS 的一些相关底层实现原理
等 2 人订阅
共15篇文章
创建于2022-06-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
iOS探索 -- KVO 的原理分析
什么是 KVO? KVO (key-value-observing) 是一种 键值观察 机制, 它允许当前对象去观察目标对象的某个属性的变化; 当被观察对象的属性发生变化后, 会通过特定方法通知观察者
iOS探索 -- Block的探索分析
1. 初识 Block 1. 什么是 Block? Block 是 C 语言的扩充功能, 可以用一句话来概括就是 带有自动变量 (局部变量) 的匿名函数。它的语法格式如下: 其中的 返回值类型 和 参
iOS探索 -- iOS中的锁(二)
接上文对 iOS 中的一些锁来进行分析, 前面主要分析了 iOS 中的 @synchronized 锁的实现和相关问题, 接下来对其他的一些锁来进行分析 1. NSLock 1. 实现分析 NSLoc
iOS探索 -- iOS中的锁(一)
1. 锁的分类 在 iOS 中基本的锁就包括了三类: 自旋锁、互斥锁 和 速写锁, 其他的还有一些锁都是基于这些锁的一些上层封装实现, 比如: 条件锁 、递归锁 等 : 1. 自旋锁 当线程遇到自旋锁
iOS探索 -- 消息转发流程分析
前面介绍了消息查找失败时的 动态方法决议 , 如果 动态方法决议 仍然没有解决问题, 在最后就会进入到 消息转发流程 中, 接下来就来探索一下消息转发流程的相关实现: 1. 开始消息转发 那么是在哪个
iOS探索 -- 动态方法决议分析
通过前面的研究知道了, 方法的过程实际上就是 objc_msgSend 进行消息查找的过程。在进行消息查找的过程中, 假如没有找到对应的方法实现的话系统会做出一些处理。处理分为两部分, 首先是做了一次
iOS探索 -- 消息的查找流程(二)
前面分析了方法查找的快速流程 objc_msgSend 的汇编实现, 在 objc_msgSend 没有查找到相关方法的时候, 就会在最后调用一个方法 _class_lookupMethodAndLo
iOS探索 -- 消息的查找流程(一)
如何分析底层源码 1. 分析方法 首先使用 clang 将 OC 代码转化为 C++ 源码, 转化代码举例: 转化的结果: (Person *(*)(id, SEL) : 为方法的签名, 其中 (id
iOS探索--离屏渲染
当我们要在屏幕上显示内容, 至少需要一块与屏幕像素数据量一样大的 frame buffer 来作为数据存储区域 (GPU 渲染结果存储的地方)。但是此时出现了特殊情况导致渲染结果无法直接写入 frame buffer, 而是需要先暂存到另外的区域进行处理, 之后再写入到 fra…
iOS探索 -- 类的结构分析(二)
可以看到 cache_t 结构体主要有三部分组成: _mask 、_occupied 和一个 bucket_t 类型的结构体指针, 且前面两个都是 unit32_t 类型的。 至于 bucket_t , 在里面发现了 _imp 和 _key, 其实 _key 就是我们的 SEL…
iOS探索 -- 类的结构分析(一)
查看 Class , 发现有一个关于他的结构体定义, 可以看出 Class 本质其实是一个 objc_class 类型的 结构体指针。然后我们继续去查看关于 objc_class 的相关内容, 发现了关于该结构体的一些声明, 但是有一个东西需要注意 OBJC2_UNAVAILA…
iOS探索 -- isa的初始化和指向分析
在之前的研究中我们大概知道了对象创建和分配内存的过程, 但是在这中间有一个东西还没有去注意。那就是对象的 isa 属性, 我们只是知道在过程中有伴随着它的一系列初始化操作, 但是这个过程中为什么要创建 isa 呢 ? 这就是此次我们要研究的目的。 1. isa 初始化 从对象创…
iOS探索 -- 内存对齐原理分析
之前在探索 alloc流程 的时候有关内存对齐 方面的内容没有去详细分析, 接下来在本文中着重对内存对齐方面的内容进行补充和继续探索。 内存对齐 (Memory alignment) , 也叫做字节对齐。计算机中的内存空间都是按照 byte 划分的, 从理论上讲对任何类型的变量…
iOS探索 -- KVC 原理分析
通过查看API我们不难发现, KVC的定义是通过对 NSObject 的扩展来实现的。所以对于所有集成了 NSObject 的类来说都可以使用 KVC, 也就是说出去少数类型 (结构体) 以外都可以使用KVC。下面是我们经常使用到的一些方法: 1. KVC 设值过程 程序会去优…
iOS探索 -- alloc、init 与 new 的分析
一. 源码跟踪 一般情况下, 当我们想要去了解某个方法的实现的时候, 我们可以在工程里面 command + Ctrl 然后点击我们想要查看的方法。但是在系统方法上却不能找到我们想要的答案, 因为苹果公司并没有把所有方法的实现开源出来, 下面介绍几种寻找源码实现的方法: 第一种…