首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS源码解析
ll_夏
创建于2021-06-12
订阅专栏
小一同学的iOS解析
等 2 人订阅
共18篇文章
创建于2021-06-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Block源码分析
在 https://juejin.cn/post/6998778491906818055 节中我们研究了block的一些现象,这节我们来从源码的角度分析block,看看它里面是怎么实现的。 clang
GCD函数分析
dispatch_barrier_sync 栅栏函数 举个🌰 输出结果: dispatch_barrier_async阻碍的是在barrier里block后面加入到concurrentQueue的任务
浅谈Block上
block的分类 NSGlobalBlock 位于全局区 在Block内部不使用外部变量,或者只使用静态变量和全局变量 NSMallocBlock 位于堆区 在block内部使用变量或者OC属性,并且
多线程(中)
热身 🌰1. 这个结果并不是确定的,最终结果self.num>=50 分析: 使用了dispatch_async,异步函数,在while循环中,当self.num++还没有返回的时候,于是又走了whi
iOS多线程(上)
为了更方便的理解后面的GCD等内容,我们先来介绍一些基本的定义 线程和进程 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行 进程要想执行任务,必须得有线程,进程至少要有一条线程 程序
KVO的原理解析
在一些场景中我们有时候会用到KVO,KVO的原理是什么样子的呢,如果自己定义一个KVO要怎么做呢? KVO Key-value observing provides a mechanism that
Method Swizzling && KVC
Method Swizzling 是什么 Method Swizzling的含义是方法交换,其主要作用是在运行时将一个方法的实现替换为另一个方法的实现 交换前: 交换后 使用场景 eg:通过 Meth
iOS中类的加载(下)以及分类的加载
引入 在类的加载中,我们知道类的加载是在realizeClassWithoutSwift函数中实现的,但是我们还有一些❓, ❓auto ro = (const class_ro_t *)cls->da
应用程序的加载(下)
从应用程序的加载上,我们了解了main函数之前的dyld整个链接过程 _dyld_start dyldbootstrap::start dyld::_main dyld::initializeMain
iOS中类的加载(上)
引入 从前面的分析中我们可以知道,我们的代码经过编译之后,生成可执行文件(mach0),可执行文件加入到内存中,程序才可以执行,❓那么这些类是怎么加载的呢 源码分析 exception_init()
应用程序的加载(上)
引入 示例代码 运行结果 我们都知道程序的入口是main()函数,当我们在viewController里面写一个+load(),在main()函数中一个gcc扩展__attribute__((cons
方法查找下(快速查找)
引言 前面从汇编的角度分析了objc_msgSend来查找方法的过程,当找不到的时候调用lookUpImpOrForward方法,objc_msgSend是用汇编写的,为什么第一步的缓存查找要用汇编来
从objc_msgSend入口分析方法查找(上)
从上一节中我们可以看到cache的insert流程是从objc_msgSend中发出的,我们来分析objc_msgSend的过程。 demo代码 [p sayHappy];会调用objc_msgSen
类的结构分析-cache_t
上一部分分析了class中的bits,本篇文章探究类结构中的cache_t,主要从两种方法来探究,lldb,脱离源码结构,这两种方法来探究。 lldb探究 探究的环境如下: 既然是缓存,那么调用之后才
类的结构分析(中)
本节讲什么 本节从源码及lldb的形式来分析类中的属性、成员变量、方法、类方法。 class_data_bits_t 从源码中可以知道类在底层是以objc_class形式存在 从上面源码中可以看出,o
对象的本质
本文主要探究以下两个问题: 对象的本质 isa 对象的本质 使用clang命令查看main.m文件 有如下.m文件 使用clang命令 clang -rewrite-objc main.m -o ma
内存对齐
实例对象内存 在上一节alloc的源码分析中看到,成员变量是以8字节内存对齐的。我们来验证一下 先声明一个Person的类 打印如下数据: 打印的结果如下: sizeof(person),我们来看一下
alloc做了什么
星期一、 二、 三、 四、 五、 六、 七 星期一、 二、 三、 四、 五、 六、 七 星期一、 二、 三、 四、 五、 六、 七