首页
AI Coding
AIDP
NEW
沸点
课程
直播
活动
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
文章被阅读
25,525
掘力值
513
关注了
0
关注者
23
收藏集
0
关注标签
17
加入于
2020-10-10