动态方法决议 objc_msgSend发送消息会先从缓存里面imp缓存中查找,如果没有查找到会进入lookUpImpOrForward查找,先从当前类的methods()查找...
动态方法决议 objc_msgSend发送消息会先从缓存里面imp缓存中查找,如果没有查找到会进入lookUpImpOrForward查找,先从当前类的methods()查找...
objc_msgSend是使用汇编编写的,首先 在缓存中查找方法的imp,如果没有查找到方法,则会调用lookUpImpOrForward开启慢速查找。 lookUpImpO...
autorelease是把这个对象添加到自动释放池了;retain和release在ARC模式下应该是在llvm编译的时候处理的;reallySetProperty是给类的属性set新值,旧值与这个类已经没有关系了,旧值的引用计数就需要release
iOS 内存管理2-MRC&ARC,retain、release、deallococ和swift都是使用引用计数进行管理对象。 每个对象的引用计数是如何存储的? isa是一个64位的联合体位域,根据CPU架构的不同每个成员的长度不同。isa结构[http...
oc是动态语言,sel会在运行时查找imp的内存地址相对于静态语言,在编译期间已经确定了imp的内存地址。 objc_msgSend arm64源码(objc 818),81...
OC中的类是一个继承自objc_object的objc_class结构体。 cache_t是做什么的?从字面上理解是缓存,那又存储什么? cache_t是缓存空间,主要存储s...
NAT:内网打穿到公网 STUN:公网信息交换,进行连接 TURN:云端服务器,防止STUN连接失败,A端通过TURN服务器转发给B端 ICE:找出所有的IP路径 NAT N...
LLVM是架构编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序编写的程序的编译时间(compile-time)、链接时间(link-time)、运行...
临时变量什么时候释放自动释放池的原理自动释放池能否嵌套使用 使用xcode创建一个project在创建的时候有会生成一个main.m文件,其中@autoreleasePool...
NSTimer提供的timerWithTimeInterval:target:selector,该方法中target会对self进行强引用 解决方式1 解决方法二:使用VC中...
oc和swift都是使用引用计数进行管理对象。 每个对象的引用计数是如何存储的? isa是一个64位的联合体位域,根据CPU架构的不同每个成员的长度不同。isa结构[http...
1.内存布局 栈区: 函数,方法 堆区: 通过alloc分配的对象 BSS段: 未初始化的全局变量,静态变量 data数据段: 初始化的全局变量,静态变量 text: 程序代...
oc中方法存在于类中,类方法存在于元类中 class_getInstanceMethod 意思是这个 会返回类的 问题1 LGPerson类 main.m 问:输出情况? s...
定义一个类 输出
网络中有个关于类的关系的图 图中虚线部分是isa的的继承关系证明如下图 有关lldb指令的说明: p/x 以16进制形式打印 x/4gx 读取内存地址,冒号左边为地址,冒号右...
分析isa结构之前,先了解下OC对象 在终端中输入命令,将其转成C++代码 C++代码很长,找到main函数中的部分 从c++代码可以发现,oc对象本质是结构体,结构体通过一...
计算机中内存空间是按照 byte 划分的,计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数的倍数,这就是所谓的内存对齐。 OC类本质上...
oc中创建一个对象 那么alloc做了什么?init又做了什么?可以通过查看苹果官方开源的objc相关的源码objc的源码地址源码是基于objc4-781,781的源码与之前...
缩放滤镜 缩放滤镜是修改纹理坐标的值原理: 从客户端传入一个时间值Time到服务端,根据时间值周期性的缩放 通过sin函数计算振幅顶点着色器代码,片元着色器正常输出 灵魂出窍...