4 CaicaiNo.1

我要认证

暂无相关简介

等级
TA的排名 3w+

iOS开发-Audio Unit错误之CrashIfClientProvidedBogusAudioBufferList

类似堆栈如下:* thread #10, name = 'AURemoteIO::IOThread', stop reason = EXC_BAD_ACCESS (code=1, address=0x201862df8) * frame #0: 0x00000002276974e4 AudioToolbox`CrashIfClientProvidedBogusAudioBufferList + 64 frame #1: 0x00000002277ed378 AudioToolbox`Audio

2020-05-17 12:52:20

iOS开发-NSObject的alloc函数执行

文章目录前言流程callAllocallocWithZone对流程的影响_class_createInstanceFromZone方法init和new前言探索下alloc的方法执行流程debug来调试runtime源码,执行以下逻辑:NSObject *objc1 = [[NSObject alloc] init];id __weak objc2 = objc1;id __weak objc3 = objc2;流程callAlloc调用 callAlloc// Calls [cls a

2020-05-10 16:58:38

音视频开发-AudioUnit录音

文章目录前言AudioUnit 录音前言录音功能是音视频开发中必要环节,AudioUnit作为iOS中底层音频框架,在iOS平台上,所有的音频框架都是基于AudioUnit实现的,使用AudioUnit会给你带来最大的自由度。AudioUnit中以Unit为划分,一个单元具有两个Element,在代码实现中,我们也称之为Bus,由于1和0与引文的Input和Output相似,所以我们Ele...

2020-05-08 21:22:43

iOS开发-FBRetainCycleDetector中的深度优先搜索DFS

文章目录图有向图图的实现方式遍历广度优先搜索 BFS深度优先搜索 DFSFBRetainCycleDetector的应用最近复习 FBRetainCycleDetector 源码的时候,需要的图的查询方法,深度优先搜索,这里记录下,便于系统复习。这里仅仅为分析FBRetainCycleDetector实现原理,采用深度优先搜索DFS图图由顶点(vertex)和边(edge)组成,通常表示为...

2020-05-01 12:06:38

iOS开发-MLeaksFinder原理学习

文章目录内存泄漏原理MLeaksFinder 是WeRead团队开源的iOS内存泄漏检测工具,用于检测内存泄漏内存泄漏app内存有3中Leaked memory: 应用程序未引用的内存不能再次使用或释放(也可以使用Leaks仪器检测到)Abandoned memory: 应用程序仍然引用的内存没有任何用处Cached memory: 仍然被应用程序引用的内存,可以再次使用以...

2020-05-01 10:15:57

iOS开发-GCD技术

GCD是iOS开发中常用的线程技术

2020-04-29 23:33:06

iOS开发-线程死锁

文章目录线程死锁互斥锁和自旋锁iOS的常见的锁线程死锁线程死锁的4个必要条件:互斥:一个资源每次只能被一个进程使用占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。进程和线程的...

2020-04-29 16:48:04

iOS开发-weak引用以及sidetable表

文章目录__weaksidetable对象的释放__weakid obj = [[NSObject alloc] init];@autoreleasepool { id __weak obj1 = obj; NSLog(@"%@",obj1);}括号内的代码编译器会转化为:id obj1;objc_initWeak(&obj1,obj);id tmp = objc_l...

2020-04-28 23:28:18

iOS开发-class_ro_t和class_rw_t的区别

文章目录class_ro_tclass_rw_tclass_rw_t生成时机分类方法加载到class_rw_t的流程class_ro_tclass_ro_t存储了当前类在编译期就已经确定的属性、方法以及遵循的协议,里面是没有分类的方法的。那些运行时添加的方法将会存储在运行时生成的class_rw_t中。ro即表示read only,是无法进行修改的。struct class_ro_t {...

2020-04-27 23:26:57

iOS开发-一个 NSObject 对象占用多少内存空间

一个 NSObject 对象占用多少内存空间?在64位CPU中,NSObject 对象占用大小为16字节,其中8字节为指针大小,8字节为实例对象结构体所占大小。在32位CPU中,NSObject 对象占用大小为8字节,其中4字节为指针大小,4字节为实例对象结构体所占大小。可以参考唐巧的 深入理解Tagged Pointer故所以当4个字节就能表示的值,要用8个字节来存储时,就会很浪费内...

2020-04-27 20:52:31

日常学习-关于GSIMap结构

文章目录数据结构解析数据结构最近研究NSNotification源码碰上了一个GSIMap结构体,发现其结构很有意思,即* A rough picture is include below: * * * This is the map C - array of the buckets * +---------------+ ...

2020-04-27 00:31:25

iOS开发-关于block块的实现

文章目录block的结构体没有引入变量的block引入变量的block引入常量引入block引入 __attribute__((NSObject)) 变量引入__block前缀变量访问__block的变量(声明范围内)访问__block的变量(block内)引入的__attribute__((NSObject)) __block 变量block 的释放block 嵌套Object-C扩展block...

2020-04-26 17:32:28

iOS开发-NSNotification源码原理学习

文章目录问题1. 实现原理对于addObserver方法,为什么需要object参数?都传入null对象会怎么样addObserver源码逻辑2.通知的发送时同步的,还是异步的3. NSNotificationCenter接受消息和发送消息是在一个线程里吗?如何异步发送消息4.NSNotificationQueue和runloop的关系5.如何保证通知接收的线程在主线程6.多次添加同一个通知会是...

2020-04-25 18:13:28

iOS开发-airpods的音频event适配

文章目录单耳机拿下iOS 7.1 BeforeMPRemoteCommandCenter双耳机取下对于airpods的适配,主要适配其单耳机拿下pause,以及恢复和双耳机取下等情景的适配。单耳机拿下对于这些事件,airpods单耳机拿下属于pause事件Event,我们使用MediaPlayer框架。iOS 7.1 Before在iOS 7.1之前,系统提供了#import <...

2020-04-21 16:11:47

iOS开发-对多个对象进行消息转发

文章目录目的实现目的参考NSProxy的实现,那么我们需要通过对多个消息的转发如何做呢?如何存储对象,强引用集合对象已经不可取,会使得对象引用计数+1,所以可以采用OC中弱引用集合 NSPointerArray参考以下文章:http://www.isaced.com/post-235.htmlhttps://www.jianshu.com/p/9d1c34999f3e通过消...

2020-04-19 00:46:24

iOS开发-KVO下的isa-swizzling

文章目录前言探索1. 引用问题2. KVO原理前言对于KVO技术,开发中使用较多,能够监听值的改变。探讨下KVO的技术实现,KVO接口如下:@interface NSObject(NSKeyValueObserverRegistration)/* Register or deregister as an observer of the value at a key path relat...

2020-04-18 15:48:54

iOS开发-isKindOfClass和isMemberOfClass

文章目录前言源码前言isKindOfClass和isMemberOfClass多多少少都用过isKindOfClass 方法调用者是传入的类的实例对象,或者调用者是传入类的继承者链中的类的实例对象,则返回YES。isMemberOfClass:returns YES if the receiver is an instance of the specified class.方法调用者...

2020-04-18 12:25:17

iOS开发-关于+load和+initialize

文章目录执行时机loadinitializemethod swizzle最近面试遇到这样的问题,一般来说我们会在+load和+initialize进行method swizzle,那么两个方法差异在哪里执行时机load+load方法是在main函数之前被调用,先调用类的+load,再调用分类的+load,且每个+load方法只执行一次。这里的只执行一次是值得是每个文件中执行一次,因为类要...

2020-04-18 11:17:25

iOS开发-main函数之前app做了哪些事

文章目录main之前1.加载可执行文件(App 的`.o `文件的集合)2.加载动态链接库,进行 rebase 指针调整和 bind 符号绑定;3.Objc 运行时的初始处理,包括 Objc 相关类的注册、category 注册、selector 唯一性检查等;4.初始化,包括了执行 +load() 方法、attribute((constructor)) 修饰的函数的调用、创建 C++ 静态全局变...

2020-04-16 22:45:22

iOS学习笔记-KVC技术

文章目录https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/KeyValueCoding.htmlhttps://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Key...

2020-04-16 01:36:12

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。