OC底层相关

《iOS面试题整理》- 谈谈你对 ARC 的理解

2019-01-15  本文已影响58人  小木头

ARC 定义

ARC (Automatic Reference Counting) 是指内存管理中采用自动引用计数, iOS 中 LLVM 编译器设置 ARC 为有效状态时, 就不需再手动插入 retain 和 release

什么是引用计数

引用计数是管理对象生命周期的一种方式, 创建对象的时候, 引用计数为1, 有一个新的指针指向这个对象的时候, 引用计数 +1, 当这个新指针不再指向这个对象的时候, 引用计数 -1, 当引用计数为 0 的时候, 可以将对象销毁, 回收内存

ARC 规则

⚠️ 所遵循的规则

__bridge 、__bridge_retain 、 __bridge_transfer

ARC 实现

__strong

  // 调用 alloc / new / copy / mutableCopy 方法
  id __strong obj = [NSObject alloc] init];
        |  |
        |  |
id obj = objc_msgSend(NSObject, @selector(alloc));
objc_msgSend(obj, @selector(init));
objc_release(obj);

  // 调用其他方法
 id __strong obj = [NSMutableArray array];
        |  |
        |  |
id obj = objc_msgSend(NSMutableArray, @selector(array));
objc_retainAutoreleasedReturnValue(obj);
objc_release(obj);

__weak

alloc
底层调用了 calloc

dealloc

上一篇 下一篇

猜你喜欢

热点阅读