自动引用计数(ARC,Automatic Reference Counting)是指内存管理中对引用采取自动计数的技术。
满足以下要求后,我们的代码就无需再次键入retain或者是release代码了:
对OC中对象所做的动作:1、生成对象;2、持有对象;3、释放对象;4、废弃对象
使用以下名称开头的方法意味着自己生成的对象只有自己持有:
除了用上面名称开头的方法,用其他的方法创建的对象都是非自己生成的对象,但是自己也能持有。例如:
id obj = [NSMutableArray array];
在该代码中,NSMutableArray类对象被赋值给变量obj,但是变量obj并不自己持有该对象。使用retain方法可以使非自己生成的对象成为自己所持有的。
[obj retain];
自己持有的对象不再需要时,持有者有义务释放该对象:释放使用release方法
[obj release];
//释放对象
- (id)allocObject {
id obj = [[NSObject alloc] init];
return obj;
}
//取得非自己生成但是自己持有的对象
id obj1 = [obj0 allocObject];
对象一经释放绝对不可访问
非自己持有的的对象,若用retain方法变为自己持有,也同样可以使用release方法释放。被自己持有的对象一旦不再需要,务必要释放。
- (id) object {
id obj = [[NSObject alloc] init];
[obj autorelease];
return obj;
}
访问已经被废弃的对象,或者释放“取得的对象存在,但是自己不持有对象”的时候,会发生崩溃