首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS底层原理探索
醉了码
创建于2021-07-28
订阅专栏
通过源码、汇编、官方文档等深层次探索iOS底层的原理。
等 5 人订阅
共28篇文章
创建于2021-07-28
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
TabBar的适配 (持续更新)
在iOS 13和 iOS 15系统下,tabbar也发生了一些更新变化,在使用的时候要特别注意,下面是一些简单的关于tabbar的背景色,以及字体颜色的设置代码:
iOS底层原理(27)-锁
一、互斥锁 互斥锁 = 互斥 + 同步 闲等 1.1递归锁 NSRecursiveLock 上面的代码打印发现,打印结果是有序的,但是本来应该打印10遍的,结果只打印了1遍。 该锁是递归锁,但是不支持
iOS底层原理(26)-锁
锁的性能 Synchronized原理分析 通过xcrun获得上面代码的cpp形式: xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.
iOS底层原理(25) - GCD分析下
栅栏函数 dispatch_barrier_async 打印 dispatch_barrier_sync 将上述的dispatch_barrier_async换成dispatch_barrier_sy
iOS底层原理(24) - GCD分析中
同步函数和异步函数的区别 1、能否开辟线程 2、任务的回调是否具备异步性、同步性 同步函数 分析libdispatch-1271.120.2源码: 先看dispatch_sync: 进入_dispat
iOS底层原理(23) - GCD分析上
GCD概念 将任务添加到队列,并指定任务执行的函数。 函数 队列 串行队列遵循 FIFO 原则 函数与队列 死锁案例 死锁的时候,会走到 dispatch_sync_f_slow. 分析上面的代码 前
iOS 底层原理(22) -多线程概念
多线程 线程和进程的定义 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行 进程要想执行任务,必须得有线程,进程至少要有一条线程 程序启动会默认开启一条线程,这条线程被称为主线程或者U
OC底层原理(16)- 类的加载原理(下)
指针强转到数据结构 realizeClassWithoutSwift方法里面的auto ro = (const class_ro_t *)cls->data();,其实就是用到了将指针强转到数据结构。
OC底层原理(15)- 类的加载原理(中)
由于我们要研究的是类,经过一系列的跟踪调试,来到了关于类的加载的地方,定位到的代码位置是realizeClassWithoutSwift,那么就进入该方法,看看它究竟做了些什么操作。 realizeC
OC底层原理(14)- 类的加载原理(上)
objc_init分析 objc_init源码 打印环境变量帮助:代码资源 以上相关函数的解释: _dyld_objc_notify_register read_images流程 map_images
OC底层原理(5)--类的原理分析下
WWDC关于runtime的优化 Clean Memory 和 Dirty Memory 扩展class_rw_t、class_rw_ext_t、class_ro_t class_rw_ext_t出现
iOS底层原理(37) - 界面优化
卡顿的原理 图形处理的框架结构 图形显示的原理 卡顿的检测 屏幕刷新率 FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。 1、CADisplayLink监测 利用CA
iOS底层原理(20) - KVO原理
关于KVO的官方文档: 官方文档 一、KVO的一些细节 1、context 官方文档的解释 翻译 代码示例 小结 通常我们通过keyPath来区分观察的内容,但是这种方式有一个问题,那就是如果父类也做
iOS底层原理(37) - Runloop
Runloop的作用 保持程序的持续运行 处理App中的各种事件(触摸、定时器、performSelector) 节省cpu资源、提高给程序的性能(有事件就处理,没有就休眠) Runloop的结构 _
iOS底层原理(35)-内存管理(中)
__weak 会在内部加1 散列表结构分析 SideTable weak_table rootRetainCount 代码探索 - 弱引用表 从上面可以得出结论,使用弱引用的时候,不会对原来对象的引用
iOS底层原理(36)-内存管理下
自动释放池 自动释放池的数据结构就是一个双向链表。 首先可以看到main函数: 通过 clang 查看编译后的部分代码,全部代码请查看 main.cpp 通过main.cpp文件可以看到,底层调用了两
iOS底层原理(34)-内存管理(上)
一、内存布局 1、内核区 用于系统级别的操作空间。 2、栈区 存放局部变量、方法参数、函数、方法指针 空间小 内存地址:一般为0x7开头; 从高到低分配空间 栈区内存如何定位? 是通过sp寄存器定位的
iOS底层优化(32) - 启动优化之理论知识
启动优化理论知识 启动过程使用main函数作为分界点分为两部分,main函数之前(premain),main函数之后。 iOS监测 - premain DYLD的反馈来监听main函数之前阶段,操作步
iOS底层优化(33) - 启动优化之clang插桩
Clang 原理 Clang文档 https://clang.llvm.org/docs/SanitizerCoverage.html 苹果提供的一个代码跟踪的功能, Tracing PCs 1、将-
iOS底层原理(28)---block分析上
block的分类 1、NSGlobalBlock 位于全局区; 在Block内部不使用外部变量,或者只使用静态变量和全局变量; 2、NSMallocBlock 位于堆区; 在Block内部使用局部变量
下一页