240 发简信
IP属地:四川
  • 120
    多线程

    线程和进程的定义 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须得有线程,进程至少要有一条线程程序启动默认会开启一条线程,这条线程被称为主线...

  • 120
    指针和内存平移

    总结 普通指针是值拷贝对象指针是二级指针数组指针指向的是数组的首地址,也是数组的第一个元素的地址数组的内存平移实际是在数组的首地址的基础上加数组内元素类型的大小即步长 问题 ...

  • 120
  • 120
    源码分析类的结构

    通过x/4gx YDPerson.class 发现类也是有数据结构有内存对象的内存里会存储很多的值像isa、成员变量,那么类会存储些什么?YDPerson是一个类,而类在底层...

  • 120
    RXSwift

    由于Swift是一门静态语言,对于相应数值的传递、响应的回调、通讯等系列会有一定的影响,不像Objective-C具备运行时机制能够动态的传递发送消息这么灵活,而RXSwif...

  • 120
    isa走位图和继承链

    通过isa分析到元类我们有了对象的isa指向类,类的isa指向元类的走位,那元类的isa呢? 通过案例测试发现YDPerson对象的isa指向了类,类的isa指向元类,元类的...

  • 120
    isa分析到元类

    通过isa推导class我们分析类isa存储了类信息,我们是否可以对Class的地址再取isa的操作呢? 通过案例我们发现对isa的地址再进行x/4gx时也可以获取到里面的地...

  • 120
    isa推导class

    通过案例验证了类和对象进行关联是通过isa来进行的,在案例中对isa取ISA_MASK就可以得出类的地址,由于isa默认是nonPointerIsa,而非纯的isa指针数据是...

  • 120
    init和new

    由于通过alloc出来的是一个对象,所以在调用init时执行的是init的对象方法 通过alloc底层源码知道了init内部调用了_objc_rootInit,然后直接将ob...

  • 120
    联合体位域

    通过案例可得出结构体struct1在存储布尔类型的4个成员变量时需要用到4个字节即32位,而这里的每一个成员变量均可用0或1来代理,那么在成员变量后添加位域指定变量占用的位数...

  • 120
    nonPointerIsa

    在malloc的篇章里我们知道了calloc后系统根据实例变量的大小进行16字节对齐后返回了一个创建对象所需大小的内存地址,并在alloc底层源码的最后赋值给了obj,而ob...

  • 120
    对象的本质

    首先要了解一下clangClang 是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类...

  • 120
    malloc底层原理

    进入到malloc_size的实现,发现只有malloc.h文件中对malloc_size的声明找不到实现,但可以发现这个文件属于usr/include/malloc/,说明...

  • 120
    结构体内存对齐

    内存对齐的原则 数据成员对齐规则:结构体(struct)(或(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小...

  • 120
    对象内存的影响因素

    通过以上案例得出以下结论 对象的内存影响有成员变量和属性,而方法不会影响对象的内存大小,而属性和成员变量之间相差的就是getter和set方法,最终可得到影响对象内存大小的是...

  • 120
    Block底层原理探索

    作为一名程序员,对于原理的探究必不可少,往往可以解决很多疑惑,例如Block您真的够了解吗?Block编译后的结构是什么?Block捕获变量又是怎样的?变量捕获后又分别做了什...

  • 120
    alloc扩展

    在alloc的底层源码探索过程中发现了callAlloc被调用了两次,带着疑惑,在初始化YDPerson时下了一个断点,并开启查看汇编模式 通过上图汇编发现在断点处调用的符号...

  • 120
    alloc底层原理

    alloc 底层原理探究 要想探索objc的底层原理,首先得初始化对象 总结 alloc开辟了内存空间 init没有对指针进行操作(指针p1、p2、p3指向了同一片内存区域)...

  • 120
    OpenGL 专业名词解析

    OpenGL (Open Graphics Library) 一个跨平台编程语言,跨平台的编程图形程序接口,它将计算机的资源抽象为一个个OpenGL的对象,对这些资源的操作抽...

  • 120
    OpenGL macOS 环境搭建

    一、准备资源 libGLTools.a CLTools glew 为方便大家,这里我已上传到网盘中,网盘地址[https://pan.baidu.com/s/11Ym7Owc...