240 发简信
IP属地:广东
  • 120
    九、消息流程之动态决议

    在消息经过慢速查找之后还没有找到,就会走到resolveMethod_locked进行消息动态决议,看一下resolveMethod_locked方法的实现: 这个方法可以看...

  • 120
    八、消息流程之慢速查找

    在Object-C中调方法在底层就是调objc_msgSend进行发送消息,消息发送时先在Class的cache中查找imp,这一步为快速查找,在cache中没有找到,就会在...

  • 120
    七、消息流程之快速查找

    1、方法调用本质 如下图中展示的对象调用方法,在底层是怎么调的呢: 为了探索这个问题,用clang将main.m文件编译为C++文件,指令为:clang -x objecti...

  • 120
    六、类原理之cache

    我们先来回顾一下objc_class的几个主要的结构,如图: 主要是有4个变量:ISA、superclass、cache、bits,其中isa和bits已经分两篇介绍过了,s...

  • 120
    五、类原理之bits

    1、指针平移 在介绍类的内存结构之前先介绍一下指针平移,在后面会用到相关知识。 这张图的意思呢就是定义一个整型数组 ,里面的元素分别为 , , , , ,可以利用 方式取到元...

  • 120
    四、类原理之isa

    1、Class底层结构分析 在联合体和ISA一篇文章中介绍了对象的Class方法其实是获取对象的isa.shiftbits,那么Class对应的数据结构是什么呢。 从定义中可...

  • 120
    三、对象原理之类绑定

    1、联合体位域 在对象原理一[https://www.jianshu.com/p/a6ed5aafeb36]的一文中研究了结构体大小,可以看出不管各成员变量是否被用到系统都为...

  • 120
    二、Flutter中Key的作用

    在Flutter中每个Widget的构造方法都提供了一个可选参数Key,这个Key有什么用呢? 1、案例 现在看一个小小的Demo,这个Demo实现的功能是:每点击一次删除按...

  • 120
    一、渲染原理

    主要是通过底层源码来分享一下Flutter是怎么渲染的。 1、Widget树 树是一种数据结构,Widget树就是存储Widget的树结构。Widget的功能是“描述一个UI...

  • 120
    二、 字节对齐

    探索OC类的大小要先来说一下结构体,因为OC类底层都是以结构体的形式存在的。 1 结构体大小-字节对齐 我们先定义一下两个结构体: 一下是输出结果: 从结构体的成员来说都是一...

  • 120
    一 、alloc&init&new流程

    要看流程肯定要看源码,可以下载objc4[https://opensource.apple.com/tarballs/objc4/]最新的781版本,参考这里自己配置成可编译...

  • 120
    二、OpenGL中的“Hello World”

    了解了OpenGL相关的专业名词之后,就开始来感受一下OpenGL到底长什么样子。 1、资源下载 使用OpenGL需要用到libGLTools这个库,连接是一个测试工程,里面...

  • 一、OpenGL专业名词解析

    图形API简介 OpenGL(Open Graphics Library)是一个跨平台编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象称为⼀个OpenGL的对象,对这...