首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
DaSen
掘友等级
iOS 菜鸟开发工程师
计算机菜鸟
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
0
文章 0
沸点 0
赞
0
返回
|
搜索文章
最新
热门
iOS 底层系列 - Runtime API
一、类二、成员变量三、属性四、方法
iOS 底层系列 - weak
Runtime维护了一个weak表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象的地址)数组。 初始化时:runtime 会调用 objc_initWeak 函数,…
iOS 底层系列 - AutoreleasePool
1. autorelease何时释放 监视的事件是 Entry (即将进入Loop),其回调内会调用 _objc_autoreleasePoolPush() 创建自动释放池。 会调用 _objc_autoreleasePoolPop( ) 来释放自动释放池。 指定autorel…
iOS 底层系列 - Runtime
1. 对象如何找到对应的方法去调用 根据对象的isa去对应的类查找方法,isa:判断去哪个类查找对应的方法 指向方法调用的类 。 根据传入的方法编号SEL,里面有个哈希列表,在列表中找到对应方法Method(方法名) 。 根据方法名(函数入口)找到函数实现,函数实现在方法区。 …
iOS底层系列 - Block
Block是 将函数封装起来的对象 既然 block内部封装了函数。 block 内部会把需要执行的代码,转换为一个 function 函数,然后通过结构体 block_impl 进行持有,在执行的时候调用 block 的 function 函数。 2. block 的类型 G…
iOS 底层系列 - AssociatedObject
iOS 中我们给分类进行添加属性成员变量使用的 runtime 的 Associated API ,但是我们对原理了解过少,下面说下 关联对象的本质和原理。 1. 关联对象的本质 关联对象并不是存储在被关联对象本身内存中,跟原本的对象没有内存关系,关联对象存储在全局的统一的一个…
iOS 底层系列 - Category
1. Category 和 Class Extension 的区别是什么? 分类 的加载在 运行时,类拓展 的加载在 编译时。不能给类添加成员变量。 类拓展 只以 声明的形式存在,一般存在 .m 文件中,在 编译期就 已经包含在类信息中 ,对于系统一些类,如nsstring,就…
iOS 底层系列 - KVC KVO
1. iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) 利用RuntimeAPI动态生成一个子类,并且让instance对象的isa指向这个全新的子类。全新的类的 superclass 等于原来的类。 苹果还重写了类的 class 方法,从而达到隐藏类,通过 o…
iOS 底层系列 - RunLoop
保持程序的持续运行。 处理App中的各种事件(比如触摸事件、滑动事件、定时器事件、Selector事件)。 节省Cpu资源,提高程序性能,在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠。 第一次进入时,初始化全局Dic,并先…
iOS 底层系列 - load 和 initialize 方法
此篇文章主要介绍的底层系列 - load 和 initialize,对于 load 和 initialize 对象我们大多数人都了解,但是对于底层和很多知识点总是容易忘。 load方法,在runtime加载类、分类的时候调用。 Load 方法可以继承,但是一般情况下不会主动去调…
下一页
个人成就
文章被点赞
22
文章被阅读
26,229
掘力值
514
关注了
0
关注者
23
收藏集
0
关注标签
17
加入于
2020-10-10