您的位置:首页 > 移动开发 > Objective-C

【Objective-C学习笔记】内存管理——ARC自动引用计数

2015-04-12 19:35 351 查看

一、基础简介

1、什么是ARC

Automatic Reference Counting,自动引用计数,即ARC。ARC的出现,减少了很多无意义的重复工作。在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和autorelease三个关键字就好,因为编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切。

2、ARC工作原理

(1)基本规则

只要没有强指针指向对象,对象所占内存就会被回收

(2)强指针和弱指针

1> 强指针 __strong

默认情况下,所有的指针都是强指针,一般都省略

Person *p = [Person alloc] init];

2> 弱指针 __weak

__weak Person *p2 = p;

二、使用注意

1、ARC特点

(1)不允许调用release、retain、retainCount
(2)允许重写dealloc,但是不允许调用[super dealloc]

2、@property的参数

(1)strong

成员变量是强指针,想长期拥有某个对象
@property (nonatomic, strong) Person *person;

(2)weak

成员变量是弱指针,排除长期拥有之外的对象,弱指针不能指向新创建的对象。
@property (nonatomic, weak) Dog *dog;

__weak Person *p = [Person alloc] init];
// 对象创建出来就会被释放...


(3)assign

用法还和以前一样,适用于非OC对象类型

3、循环引用

一端用strong,一端用weak。

三、ARC的开启和禁止

(1)使用Xcode自动转换



(2)手动设置某些文件支持ARC

点击项目 --> Build Phases --> Compile Sources,在需要开启ARC的文件后面添加-f-objc-arc



(3)手动设置某些文件禁止ARC

点击项目 --> Build Phases --> Compile Sources,在需要禁止ARC的文件后面添加-fno-objc-arc

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐