ARC是“由编译器进行内存管理”的,但实际上只有编译器是无法完全胜任的,在此基础上还需要Objective-C运行时库的协助。也就是说,ARC由以下工具、库来实现。
1)clang(LLVM编译器)3.0以上;
2)objc4 Objective-C运行时库493.9以上;
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_retainAutoreleaseReturnValue(obj);
objc_release(obj);
时间: 2024-10-12 20:59:08