谁能系统的讲一下安卓系统的音频架构以及和ios底层对比的优劣

谁能系统的讲一下安卓系统的音频架构以及和ios底层对比的优劣,第1张

安卓音频用的是广播方式,也就是可以后台同时执行其他程序,IOS底层架构采用的是某一时刻只有一个程序在运行,所以对比来说IOS只处理一个任务,速度效率很高,而android要达到同样的效果就需要更大的内存,频率更高的CPU

前面我们提到,在OC对象中实例对象的isa是指向类对象,类对象的isa指向元类对象,这样我们可以通过isa把OC中的三种对象联系起来。那么,isa是怎么实现的呢?实例对象的isa直接存放着类对象的地址,类对象的isa直接存放元类对象的地址吗?

那么实例对象是怎么通过isa来找到类对象的呢?这里就不得不提一个ISA_MASK的东西,我们还是从源码寻找答案。

其实这个问题不难解决,因为我们可以看到objc_class的结构,那么我们可以定义一个和它一样的结构体来获取isa

添加观察者前,如图(1):

添加观察者后,如图(2):

分析KVO底层原理:

kvo基于runtime机制实现,使用了isa交换(isa-swizzling)

添加observer:

当一个对象的属性值发生改变时,系统会自动生成一个子类,并且以NSKVONotifying_+类名来命名,将之前对象的isa指针指向了这个子类,重写了观察对象的setter方法,并且在重写的方法中添加了willChangeValueForKey:和didChangeValueForKey:而这两个方法内部会主动调用observeValueForkeyPath,从而实现监听内容的改变。

移除oberver:

让isa指向原来的类对象

iOS底层原理07:类 & 类结构分析 中我们对 类结构 有了大概的认识,本文主要探索 objc_class 的 bits属性 ,探索 成员变量 、 属性 、 方法 (对象方法、类方法)、 协议 等是如何存储的

WWDC2020中关于数据结构的变化(Class data structures changes)视频地址

Object-C运行时会使用这些 数据结构 来跟踪类,

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9781156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存