博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集合的内存管理
阅读量:2352 次
发布时间:2019-05-10

本文共 739 字,大约阅读时间需要 2 分钟。

 一:手动集合内存管理

  创建一个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;

转载地址:http://rxrvb.baihongyu.com/

你可能感兴趣的文章
为什么删除文件后磁盘空间还是不变
查看>>
VNC server简单配置vnc
查看>>
win7 安装的offic2007
查看>>
rman本库恢复性测试
查看>>
IBM TSM磁带管理操作小记一则
查看>>
ORA-00258: NOARCHIVELOG 模式下的人工存档必须标识日志
查看>>
Java调用bat文件
查看>>
此责任无可用函数
查看>>
java获取数字和汉字
查看>>
excel Option Explicit webadi
查看>>
ICX错误
查看>>
windows Xp NTLDR is missing
查看>>
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
查看>>
Centos 6.x 安装配置MySQL
查看>>
-source 1.5 中不支持 diamond 运算 请使用 -source 7 或更高版本以启用
查看>>
jar包读取资源文件报错:找不到资源文件(No such file or directory)
查看>>
超简单:Linux安装rar/unrar工具与解压到目录示例
查看>>
Eclipse创建Maven Java8 Web项目,并直接部署Tomcat
查看>>
RedHad 7.x服务器操作记录
查看>>
BindException: Cannot assign requested address (Bind failed)解决办法
查看>>