集合的内存管理

来源:互联网 发布:linux jre1.6 编辑:程序博客网 时间:2024/04/28 12:28

 一:手动集合内存管理

  创建一个Person 类,调用时

 Person *p = [[Person alloc]init];

NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:0];


//当把对象存入到数组(或者字典、NSSet)中的时候,数组会对这个对象进行一个retatin操作

[array addObject:p];


//当把一个对象移除数组的时候,会对这个对象进行一次release操作

[array removeObject:p];

 

   //会对数组中所有的对象进行一次release操作 

[array removeAllObjects];


//当集合对象被销毁的时候,会对其内部所有的对象进行一次  release 操作

[array release];


 [p release];


二:ARC机制  集合内存管理


ARC机制也是需要担心内存溢出的。当在某些集合(NSArray,NSDictionary,NSSet) 中存储了对象的强指针,如果不清空、释放对象,还是会导致内存溢出

 

Person *p = [[Person alloc]init];

NSMutableArray *array = [[ NSMutableArray alloc]init];


//当一个对象被存入集合中时候,默认会保存它的强指针

[array addObject:p];


//当把一个对象从集合中删除的时候,会释放掉这个对象的强指针

//[array removeObject:p];

//[array removeAllObjects];


//会释放掉内部的所有强指针

array = nil;


p= nil;








0 0