ARC 和 MRC 内存管理
从 MRC—>ARC 就是将内存管理部分,从开发者的函数中转移到函数外部的runtime 中.由于 runtime 的开发简单,逻辑层次高,所以 runtime 的出错几率很小,另外由于编译器的优化,使得运行速度很高.
ARC 的特点:
- 不能显示的调用 dealloc,retain,release 等(同样不能再 ARC 中自定义的 delloc 方法中调用[super dealloc]方法.不能调用@selector(retain), @selector(release)的方法)
- 不能使用 NSAllocateObject 和 NSDeallocateObject来创建和释放对象.
- 不能使用 C 语言结构体中使用对象指针
- id 和 void * 之间不能随意转换
- 不能使用NSAutoreleasePool对象
- 不能使用内存区域.为了自动 retain—release,ARC 在内存管理方面做了一些限定,即不能以 new 为开头命名编译器名称,也就是说不能以 new 开头命名属性,除非指定一个不同命的 getter 方法.