首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS底层探索
晓之卫
创建于2022-01-17
订阅专栏
iOS底层实现原理的一些探索,重点内容标彩、需要留意的内容标黑,分析过程不需过分关心,重点关注代码块、图中的手写注释与总结
等 10 人订阅
共29篇文章
创建于2022-01-17
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
iOS底层探索-Runtime方法汇总
--- highlight: hybrid --- ```swift // // ViewController.m // Runtime // #import "ViewController.h" #
iOS底层探索-Method Swizzling
1、概述 利用 OC 的Runtime特性,动态改变SEL(方法编号)和IMP(方法实现)的对应关系,达到 OC方法调用流程改变 的目的,主要用于OC方法 1.1、关系类比 类比关系为书的目录页,SE
iOS底层探索-RunLoop
1、概述 不同于程序执行完代码就会自动退出,App 启动后要保持运行状态,当用户使用某些功能,程序要执行相应代码作出反馈;所以我们需要一个机制,让程序不退出并随时处理事件 这种模型通常被称作Event
iOS-组件化
1、介绍 组件化将项目拆分成独立组件,使用特定通讯方式来解耦 1.1、组件化优点 解耦 模块复用 单元测试 功能拆分给不同组去开发 1.2、组件化分层 一般项目的组件化分为业务层、通用层、基础层 划分
iOS底层探索汇总
iOS底层探索-Alloc原理之对象 iOS底层探索-Alloc原理之内存 iOS底层探索-Alloc原理之类 iOS底层探索-类的原理分析 iOS底层探索-类的原理之属性、方法 iOS底层探索-ca
iOS底层探索-KVC、KVO
1、KVC 键值编码,通过Key名直接访问对象属性,由NSKeyValueCoding非正式协议启用的机制 KVC 本质上是对 NSObject、NSArray、NSDictionary、NSMuta
iOS底层探索-自动释放池
1、概述 OC 中的一种内存自动回收机制,它可以将加入AutoreleasePool中的变量release的时机延迟 当创建一个对象,在正常情况下,变量会在超出其作用域时立即 release ,如果将
iOS底层探索-散列表
上一篇 内存管理 中我们了解到,对象的内存管理有tagged pointer这种无需引用计数的,也有需要引用计数的;而当 指针为非nonpointerIsa、或者nonpointerIsa中的 ext
iOS底层探索-界面优化
1、卡顿原理 1.1、界面显示原理 CPU:Layout UI布局、文本计算、Display绘制、Prepare图片解码、Commit提交位图给 GPU GPU:用于渲染,将结果放入 FrameBuf
iOS底层原理-内存管理
1、内存分布 当程序运行时,系统会开辟 内核区、程序使用的内存五大区和保留区 1.1、数据类型 值类型 基本数据类型 存入栈 无需内存管理 引用类型 继承自NSObject的 存入堆 需要内存管理 1
iOS底层探索-Clang插桩
在上篇 启动优化 中我们最后使用二进制重排方法,将启动相关的符号方法提前加载到内存,从而减少 缺页中断(Page Fault) 来提高启动速度,但我们如何确定需要将哪些方法提前呢?本篇就来介绍寻找这些
iOS底层探索-启动优化
1、pre-main iOS应用的启动时间分为main函数之前与main函数之后,main之前的部分叫做 pre-main pre-main耗时情况 在iOS15之前,我们可以通过设置 Edit Sc
iOS底层探索-LLVM
1、编译器 作用是 将源代码编译成可执行程序 1.1、编译器构成 编译器由前端编译器、优化器和后端代码生成器3部分组成 前端编译器 前端编译器的任务是解析源代码,会进行 词法分析、语法分析、语义分析、
iOS底层探索-Block
1、Block类型 全局block 如果没有使用外部变量,或者只使用全局变量或静态变量,则是全局block 栈block 如果使用了外部变量,赋值弱引用,则是栈block 堆block 如果使用了外部
iOS底层探索-@synchronized
上篇 锁 的探索中我们了解了常规锁的一些内容,但开发中最便捷的还是@synchronized,它 既是互斥锁又是递归锁,因此我们单独拉出一个篇章 1、查看转译文件 我们准备一个简单的 @synchro
iOS底层探索-锁
1、atomic、nonatomic 1.1、set方法 如果是atomic属性,进行set前会进行加锁,set后解锁 1.2、get方法 如果是atomic属性,进行get前会进行加锁 小结 ato
iOS底层探索-GCD单例、阻塞使用
1、单例(dispatch_once) 1.1、dispatch_once_f 1.2、_dispatch_once_gate_tryenter DLOCK_ONCE_UNLOCKED代表还未被执行过
iOS底层探索-GCD原理
进行GCD底层原理探索前,我们需要到Apple官网的 Source Browser 下载GCD源码 1、main_queue 主队列通过dispatch_get_main_queue()获取,那么我们
iOS底层探索-分类的加载与关联对象
上篇 类的加载 中我们了解了 dyld 在编译阶段通过 _dyld_objc_notify_register 方法中的 map_images 对类进行加载的流程,这篇我们再来看一下如果在有分类时,分类
iOS底层探索-类的加载
上篇 dyld我们了解了加载dyld的工作流程和与objc的调用,这篇我们探究一下 _dyld_objc_notify_register 方法中的 map_images、load_images 1、o
下一页