IOS面试题object-c 111-115
111. 简述MRC (手动引用计数)和 ARC( 自动引用计数) ) ? |
1 1 、 MRC : alloc , retain , release , retainCount,autorelease,dealloc |
2 2 、 ARC : ARC 是 LLVM 和 Runtime 协作的结果 ARC 禁止手动调用 retain,release,retainCount,autorelease 关键字 ARC 新增 weak,strong 关键字 |
3 3 、 引用计数管理: alloc: 经过一系列函数调用,最终调用了 calloc 函数,这里并没有设置引用计数为 1 retain: 经过两次哈希查找,找到其对应引用计数值,然后将引用计数加 1(实际是加偏移量) release:和 retain 相反,经过两次哈希查找,找到其对应引用计数值,然后将引用计数减 1 dealloc: |
4 4 、 弱引用管理: 添加 weak 变量:通过哈希算法位置查找添加。如果查找对应位置中已经有了当前对象所对应的弱引用 数组,就把新的弱引用变量添加到数组当中;如果没有,就创建一个弱引用数组,并将该弱引用变量 添加到该数组中。 当一个被 weak 修饰的对象被释放后,we |