首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
xdkhan
掘友等级
iOS搬瓦工
进城务工人员
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
赞
36
文章 35
沸点 1
赞
36
返回
|
搜索文章
最新
热门
objc_msgSend 快速查找
上面的实验我们可以发现,实例方法调用的本质就是 objc_msgSend。 查找源代码,我们发现 objc_msgSend 是使用汇编实现的。 从 objc-msg-arm64.s 文件获取汇编代码片段。
catch_t 内容和存储原理
前面的文章中,我们分析了 isa 和 bits,本次文章,我们分析 cache。 至此,我们可以得到一个大致的印象。 catch_t 存储了一个列表,列表中的每一项存储了一对 sel 和 imp。 查找方法的时候,可以先到cache_t 中查询,直接查到 imp 可以提高访问速…
方法的存储位置和类的类型判断
-classMethod 类方法(类对象的实例方法)存储在元类对象 metaClass 中。 从源码可知,cls 获取类方法时,其实是取 cls->isa 的存储实例方法,而 cls->isa 就是元类对象 metaClass。而使用 metaClass 获取类方法时,由于是元…
NSObject-C 类结构分析
每个 OC 对象, 包括实例对象、类对象、元类对象,都有一个 isa 成员变量, 其中存储了对象的类信息。 从源码中可知,objc_class 结构体对象,使用 x/4gx 命令输出内存信息,第一个 8 字节存储 ISA 变量,第二个 8字节存储 superclass 变量。
isa 存储 cls 信息原理
这 64 位进行了固定分配,来存储指定的信息。 我们把断点打在图中位置。输出如下信息 可以看出,在未设置 shiftcls 时,bits 从右到左 [3, 46] 位都是0. 在 Objective-C 中,类的指针是按照字节(8 bits)对齐的,也就是说类指针地址转化成十进…
内存字节对齐
尽管内存是以字节为单位,但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度.
OC 对象 alloc 流程分析
在 callAlloc 函数,我们打上三个断点,便于调试。点击 continue,进入下一个断点,如图。 此时内存开辟了,但是 obj 还是 id 类型,没有当前类的信息。继续下一步 initInstanceIsa 函数将当前类信息与开辟的内存进行关联,已经是我们要创建的类了。…
OpenGL ES 马赛克滤镜
本文建立是在 OpenGL加载纹理及分屏滤镜实现 一文基础上增加着色器文件实现。 将屏幕使用六边形分割,可以画出长宽比为 3:√3 ≈ 1.5 的矩形。 以屏幕左上角为 (0,0),则屏幕上任意一点,都可以找出它所对应的矩形。 再根据当前坐标距离两个六边形的距离,找出最近的一个…
OpenGL ES 索引绘图案例
定义:标记一组顶点,建立一个索引数组,来标记所有图元。
OpenGL ES 图片的加载以及纹理翻转
绘制表面:用于绘制图元的表面,它指定渲染所需要的缓存区类型。例如颜色缓存区、深度缓存区、模版缓存区。 OpenGL ES API 并没有提供如何创建渲染上下文或者上下文如何连接到原声窗口系统。EGL 是 Khronos 渲染 API[如 OpenGL ES]和原生窗口系统之间的…
下一页
个人成就
文章被点赞
18
文章被阅读
12,414
掘力值
474
关注了
35
关注者
6
收藏集
3
关注标签
2
加入于
2017-01-13