iOS中的ARC机制

Automatic Reference Counting,自动引用计数,iOS5引入,用以解决手动内存管理问题。

ARC的特点

ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC)。

Automatic Reference Counting (ARC) is a compiler-level feature that simplifies the process of managing object lifetimes (memory management) in Cocoa applications.

在对象被创建时 retain count +1,在对象被release时 retain count -1.当retain count 为0 时,销毁对象。程序中加入autoreleasepool的对象会由系统自动加上autorelease方法,如果该对象引用计数为0,则销毁。

ARC的修饰符

ARC提供了4种修饰符:

__strong, __weak, __autoreleasing, __unsafe_unretained

assign适用于基本数据类型,weak是适用于NSObject对象,并且是一个弱引用。assign其实也可以用来修饰对象,那么我们为什么不用它呢?因为被assign修饰的对象在释放之后,指针的地址还是存在的,也就是说指针并没有被置为nil。如果在后续的内存分配中,刚好分到了这块地址,程序就会崩溃掉。而weak修饰的对象在释放之后,指针地址会被置为nil。所以现在一般弱引用就是用weak。
strong是强引用,被引用一次引用计数会+1,当引用计数为0,销毁对象。

你可能感兴趣的:(iOS中的ARC机制)