底层原理
文章平均质量分 91
henry_lei
这个作者很懒,什么都没留下…
展开
-
移动端开发iOS系列之Runtime
作者:洋仔链接:https://juejin.cn/post/69616536056527585641.objc在向一个对象发送消息时,发生了什么?objc在向一个对象发送消息时,runtime会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行,如果一直到根类还没找到,转向拦截调用,走消息转发机制,一旦找到 ,就去执行它的实现IMP 。2.objc中向一个nil对象发送消息将会发生什么?如果向一个nil对象发送消息,首先在寻找对象的isa指针时就是原创 2021-05-14 15:25:12 · 335 阅读 · 0 评论 -
iOS 底层系列 - Category
链接:https://juejin.im/post/6884627584735248391一、常见问题1. Category 和 Class Extension 的区别是什么?分类 的加载在 运行时,类拓展 的加载在 编译时。不能给类添加成员变量。类拓展 只以 声明的形式存在,一般存在 .m 文件中,在 编译期就 已经包含在类信息中 ,对于系统一些类,如nsstring,就 无法添加类扩展。2. Category 中有 load 方法吗?有load方法。load方法在runtime加载类原创 2021-03-12 15:18:43 · 112 阅读 · 0 评论 -
OC底层-block底层原理探究
一、block的常见三种类型1.1 NSGlobalBlockvoid(^block)(void) = ^{ NSLog(@"hello,block");};NSLog(@"%@", block);<__NSGlobalBlock__: 0x1065fa088>NSGlobalBlock 全局类型block,存储在内存中的全局区,这种情况下block,无传入参数无返回值。1.2 NSMallocBlockint a = 10;void(^block)(void) =转载 2020-11-26 15:19:31 · 126 阅读 · 0 评论 -
OC底层-block底层原理探究
一、block的常见三种类型1.1 NSGlobalBlockvoid(^block)(void) = ^{ NSLog(@"hello,block");};NSLog(@"%@", block);<__NSGlobalBlock__: 0x1065fa088>NSGlobalBlock 全局类型block,存储在内存中的全局区,这种情况下block,无传入参数无返回值。1.2 NSMallocBlockint a = 10;void(^block)(void) =转载 2020-11-25 13:24:48 · 258 阅读 · 0 评论