首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS 底层原理
晨曦_iOS
创建于2021-06-22
订阅专栏
iOS 底层原理的探究。。。
等 11 人订阅
共27篇文章
创建于2021-06-22
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
晨曦_iOS
1年前
iOS
Objective-C
NSTimer 不释放问题分析及解决
NSTimer 不释放问题 如上代码所示,我们创建一个定时器,并添加到当前 runLoop,也通过 __weak 修饰了 weakSelf,但是当我们运行计时器离开页面的时候发现计时器并没有销毁,依然
1602
6
8
晨曦_iOS
1年前
iOS
Objective-C
内存管理-弱引用分析
散列表结构分析 在 内存管理-retain&realese rootRetain 函数中我们介绍了当 isa 不是 nonpointer 类型的时候就会直接操作散列表,对引用计数进行增加。我们进到 s
644
3
评论
晨曦_iOS
1年前
iOS
Objective-C
内存管理-retain&realese
在分析 retain 和 realese 之前我们先了解一下 nonPointerIsa,nonPointerIsa 代表非指针,代表 isa 的结构,在相关位置处理上与 TaggedPointer
1134
2
评论
晨曦_iOS
1年前
iOS
Objective-C
内存管理-TaggedPointer
TaggedPointer 概念 2013 年 9 月苹果推出了首个采用 64 位架构的 A7 双核处理器的手机 iPhone5s,为了改进从 32 位 CPU 迁移到 64 位 CPU 的内存浪费和
1059
7
评论
晨曦_iOS
1年前
iOS
Objective-C
内存管理-内存布局
在我们开发过程中基本时时刻刻都会跟内存打交道,那么在底层内存又是如何分布的呢?相信这也是大家比较想知道的,下面我们就来介绍下。 如图所示我们可以看到,内存除了内核区与保留区,我们平时用到的分为五大区域
840
2
评论
晨曦_iOS
1年前
iOS
掘金技术征文
启动优化-Clang 插桩
我们在前面讲了二进制重排启动优化的原理,在没有重排之前每一个数据页中的代码有可能是启动时刻的代码,也有可能不是,这样就造成了浪费。二进制重排之后,就会把所有启动时刻的代码都排到最前面,这样就减少了缺页
1848
3
评论
晨曦_iOS
1年前
iOS
掘金技术征文
启动优化-二进制重排
当 App 中的业务模块越来越多、越来越复杂,集成了更多的三方库,App 启动也会越来越慢,因此我们希望能在业务扩张的同时,保持较优的启动速度,给用户带来良好的使用体验。一般启动分为两个阶段,main
1060
9
2
晨曦_iOS
1年前
iOS
LLVM 的介绍及编译流程分析
在我们介绍 LLVM 之前我们先通过一个案例来了解一下编译器。 编译器 python 示例 首先打开终端,cd 到一个指定目录下,通过 vi helloDemo.py 命令创建一个 python 文件
1082
4
评论
晨曦_iOS
1年前
iOS
block 底层原理分析(二)
通过clang分析block 类似这样一段代码,我们通过 clang 之后生成 c++ 代码如下: 通过简化之后我们又能得到如下代码: 这里我们可以看到,block 其实就相当于 __main_blo
351
2
评论
晨曦_iOS
1年前
iOS
GCD 底层源码分析(三)
这里主要分析栅栏函数, 信号量, 调度组的应用及它们的底层源码实现原理,以及 Dispatch_Source 跟可变数组不安全的原因分析。
342
2
评论
晨曦_iOS
1年前
iOS
block 底层原理分析(一)
block 的类型 在我们的日常开发过程中相信大家都会用到 block,但是 block 有哪些类型,你又是否知道呢?下面我们来看一下 block 的类型区分。 block 三种类型 通过代码演示,我
1744
5
评论
晨曦_iOS
1年前
iOS
iOS 锁的原理分析(二)
锁的分类 自旋锁 互斥锁 这里属于互斥锁的有: NSLock pthread_mutex @synchronized 条件锁 是锁住了。当资源被分配到了,条件锁打开,进程继续运行。 NSConditi
873
4
评论
晨曦_iOS
1年前
iOS
iOS 锁的原理分析(一)
在我们的日常开发中肯定都有过锁的使用,那么这些锁的底层原理是如何实现的呢?各种锁的性能区别又有多大呢?在这一篇章我们来探究一下。 各种锁的性能分析 在这里我们通过代码对 10 种锁进行了测试,并制作了
469
3
评论
晨曦_iOS
1年前
iOS
GCD 底层源码分析(二)
在这一篇章我们主要分析同步函数与异步函数的底层源码实现,在探索之前我们先了解一下同步函数与异步函数的区别。 同步函数 dispatch_sync dispatch_sync _dispatch_syn
314
3
评论
晨曦_iOS
1年前
iOS
GCD 底层源码分析(一)
GCD 初探函数和队列 GCD 简介 什么是GCD? GCD的优势 GCD 是苹果公司为多核的并行运算提出的解决方案 GCD 会自动利用更多的CPU内核(比如双核、四核) GCD 会自动管理线程的生命
489
4
2
晨曦_iOS
1年前
iOS
多线程介绍
线程和进程 线程和进程的定义 进程与线程的关系 多线程的意义 多线程原理 时间片的概念:CPU在多个任务直接进行快速的切换,这个时间间隔就是时间片 * (单核CPU)同一时间,CPU 只能处理 1 个
514
4
评论
晨曦_iOS
1年前
iOS
分类的加载原理补充及类扩展 , 关联对象介绍
分类加载的补充 method_list 数据结构 首先通过源码可以看到 method_list_t 继承于 entsize_list_tt,包含 method_t , method_list_t ,
4548
8
评论
晨曦_iOS
1年前
iOS
iOS 类的加载原理下
ro, rw, rwe 在继续讲类的加载之前我们先来了解一个概念,什么是 ro, rw 跟 rwe。 推荐大家看下 WWDC20 这段视频,相信大家看完之后会对 ro, rw 跟 rwe 有更详细的了
1282
15
评论
晨曦_iOS
1年前
iOS
iOS 类的加载原理中
在 iOS 类的加载原理上 中我们讲到 readClass 方法,该方法通过类的地址对类的名称与地址进行绑定匹配。但是我们还不了解类的具体实现过程,这里我们来继续探究一下。 realizeClass
807
6
评论
晨曦_iOS
1年前
iOS
iOS 类的加载原理上
我们在 iOS 应用程序加载流程分析 中介绍了 dyld,其中 dyld 在加载的过程中会做一件重要的事情就是链接镜像文件 images,但是这里只是映射过来,还只是一个库,还没有变为我们的内存。例如
616
6
1
下一页