OC学习心得之内存管理
来源:互联网 发布:淘宝交钱需要交多少钱 编辑:程序博客网 时间:2024/05/21 09:45
在OC中,当我们对一个对象拥有控制权后,都需要进行释放,但是如何拥有对象的控制权呢?当我们对对象进行了alloc、retain、copy操作后,我们拥有了对象的控制权,因此需要对其进行释放(除了这3个操作,还有个new也能实现alloc类似的功能,但是不建议使用,因此,如果碰见new,也需要进行释放)。
在这里进行nil赋值的原因是最后一次release对象后,其引用计数可能不立即为0,读者可以打印引用计数看看,可能会为1,而且此时此对象可能会指向其它一段内存区域,如果进行调用,可能会导致其它问题,如可能形成野指针,所以最好是进行一次nil赋值。
此方法从NSObject继承过来,不需要在.h文件中进行声明;
此方法不需要自己手动调用,当引用计数为0时,系统自动向对象发送一条dealloc消息;
主要功能是释放成员变量的所有权;
最后调用[super dealloc]释放父类变量。
内存管理的基本原则:
如果使用alloc(或者copy、new)方法创建一个对象,或者使用retain保留一个对象,那么,都要自己释放对象。
在大多数情况下,申请内存的语句数量和释放内存的语句数量应该相等。
尽量少使用内OC的MRC,总之要记住一条黄金法则:谁创建谁release,谁retain谁释放。存,用完后记得立即释放。
- OC学习心得之内存管理
- OC之内存管理
- OC之内存管理
- OC之内存管理
- OC之内存管理
- OC之内存管理
- OC之内存管理
- OC之内存管理
- oc之内存管理
- OC语言之内存管理
- OC学习之内存管理初解
- OC学习之路之内存管理
- OC之内存管理(笔记)
- -OC学习之内存管理与ARC
- OC学习小结之内存管理
- 黑马程序员-----OC学习之内存管理
- oc----内存管理之内存释放原则
- 黑马程序员--OC之内存管理
- 自定义控件(19)---自定义控件之高仿猫眼小项目(1)
- 杭电-3342Legal or Not(topo)
- win10、win7系统64位oracle11g安装教程以及32位plsql连接教程
- SparkSQL简单测试
- php依赖注入
- OC学习心得之内存管理
- GDAL C# “OSGeo.GDAL.GdalPINVOKE”的类型初始值设定项引发异常 解决方法
- Java 打印三角形
- nyoj 合并游戏 832 (状压DP) 好题
- 如何调试MFC中的内存泄漏
- 【小白装系统】——常见问题解决
- DataSet 转Json
- 简单封装AFNetworking
- Activity之间传递参数的方法