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,销毁对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容