首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
iOS OC底层进阶
vony
创建于2022-03-20
订阅专栏
OC一些底层的实现和原理
等 8 人订阅
共15篇文章
创建于2022-03-20
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
iOS alloc & init 方法解析
在 viewDidLoad 方法中,[TTObject alloc]这个方法其实是调用了objc_alloc,通过对下符号断点发现objc_alloc存在libobjc.A.dyilb库中。 进入callAlloc()函数会执行到 __OBJC2__部分。因为canAllFas…
iOS Category 实现解析
category是 Object-C 2.0 之后添加的语言特性。 main函数启动前,系统内核会启动dyld把App依赖的各种库加载到内存,其中包括libobjc (OC和runtime)。 我们可以看到map_images实际上调用了map_images_nolock 方法…
iOS 类的数据结构
内部结构如下,需要注意的是objc_class继承自objc_object,那么里面就应该有一个isa。 接下来看bucket_t是什么,bucket_t有2个成员变量_imp和key,这不用多说肯定是方法和关键值。那么我们就可以猜想,是不是能根据key获取到对应的IMP,进行…
iOS isa详解
有如下代码,在控制台输出obj的数据结构,排在第一位的就是isa的地址。 为什么呢?因为对象继承自NSObject,NSObject在底层的实现是结构体objc_object,里面只有一个isa成员变量,那么对象的首地址指向的第一块就是isa所在。 正常来说isa指向的就是该对…
iOS 内存对齐
如果是结构体中含有结构体作为成员,则结构体成员要以自身内部的最大元素大小整数倍作为基础。(structA中含有structB,structB 中最大元素为double,则structB以8的整数倍存储)
iOS 方法调用/消息发送详解(objc_msgSend)
可以看到第18行sayHi被存入了rsi寄存器。17行好像还把什么存进了rax寄存器。打印出来看看,是一个LGperson对象。 我们来看看objc_msgSend是怎么定义的。第一个参数是id类型的消息处理者、第二个是SEL类型的方法表示。如果有需要的话后面还会跟上其他参数。…
iOS 消息转发机制详解
iOS消息转发机制的说明与总结~ 动态方法解析~ 快速消息转发~ 标准消息转~ 需要可执行源码的留言~ 希望能帮到大家~
iOS weak详解
iOSweak详解~ weak底层结构~ weak添加流程~ weak移除流程~ 需要可执行源码可留言~
iOS RunLoop 详解
详细解析RunLoop 1、什么是RunLoop~ 2、RunLoop的结构~ 3、RunLoop的运行流程~
iOS 关于符号该知道的事儿
关于符号该知道些啥? 符号表是什么~ 符号绑定及其过程~ 怎么去除符号~ 怎么恢复符号~ 怎么修改符号~ 解决第三方库的符号冲突~
iOS 静态库动态库看这里
要了解动态库和静态库嘛~ 看这一篇就行~ 回答常见的问题~ 带xcode演示过程~ 需要脚本以及有疑问的同学可以留言~
iOS 编译LLVM
由于最新的LLVM支持cmake来编译了,我们还需要安装cmake。 编译,选择 ALL_BUILD Secheme,编译的时间会比较长,预计1+小时。
iOS LLVM及编译过程
优化器端的任务是改善代码的运行时间,例如消除冗余运算等。 OC、c、c++ 使用的编译器前端是clang;Swift使用的是Swift;后端都是LLVM。 传统的编译器设计把前端、优化器、后端集成在一起,需要支持新语言或新硬件结构时就必须重新开发一套编译器。LLVM的设计模式很…
iOS 屏幕渲染得懂点儿
iOS 屏幕渲染得懂点儿~ 了解显示的发展过程~ 了解屏幕撕裂与掉帧~ 了解图形图像渲染流程~ 了解离屏渲染~ 看这就行
iOS 部分开源代码下载链接
opensourcehttps://opensource.apple.comCoreFoundationhttp://opensource.apple.com/tarballs/CF/GCDhttps