博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈OC内存管理
阅读量:4677 次
发布时间:2019-06-09

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

MRC(手动管理内存):

1、如果使用了alloc、new、copy、retain必须使用release、autorelease来释放这个内存

2、alloc产生一个新对象,把新对象的引用计数器设置为1,retain保留对象,使对象的引用计数器+1,release使对象的引用计数器-1

3、当对象的引用计数器变成0,就会调用dealloc函数,对象释放内存

4、对象创建的时候计数器=1,retain,计数器+1,release,计数器-1,加入数组计数器+1,数组删除对象引用计数器-1

5、property中的三个关键字assign、retain、copy、strong、weak修饰的变量的setter写法

   assign:-(void)setCar:(Car*)car   {

            _car = car;

            }

  retain:-(void)setCar:(Car*)car{

            if(_car != car){

               [_car release];

              _car = [car  retain];

            }

          }     copy只是将retain改成copy,被定义有copy属性的自定义对象必须要符合NSCopying协议,并实现必须实现的方法,对于不可变对象而言,copy使引用计数器+1,对于可变对象而言,copy不对原引用计数器的值改变,生成一个新的对象,引用计数器=1

  strong:相当于retain,weak相当于assign  当一个对象不再有strong类型的指针指向它的时候 它会被释放  ,即使还有weak型指针指向它。不过strong、weak只能修饰对象。

 

ARC使用机制:不能调用dealloc,不能重写和调用retain,release,retainCount 和autorelease,同理,@selector(retain),@selector(release)这些曲线救国的方法也不能调用。 dealloc虽然能够重写,但是不能调用[super dealloc]之类的方法

   

如有错误,烦请指正! 

转载于:https://www.cnblogs.com/xiaonizicome/p/5435813.html

你可能感兴趣的文章
初识 Fuzzing 工具 WinAFL
查看>>
python:学习自顶向下程序设计:竞技体育模拟
查看>>
整数中1出现的次数(important)
查看>>
【转】软件设计模式六大原则详解
查看>>
线程中允许操作控件
查看>>
简单的论坛信息
查看>>
知识点:Oracle+表连接方式(内连接-外连接-自连接)+详解 来自百度文库
查看>>
centos 7 修改ssh登录端口
查看>>
查看网络流量情况、带宽大小
查看>>
生日相同 2.0
查看>>
代码规范审查 - 审查分析工具选型
查看>>
git 命令速查及使用
查看>>
在树莓派3B上安装node.js
查看>>
20159302《网络攻击与防范》第十一周学习总结
查看>>
04-----对象的单体模式
查看>>
C++静态计算的例子
查看>>
再谈记忆化搜索 HDU-1078
查看>>
在Node中使用ES6语法
查看>>
2015年秋面试心得汇总
查看>>
海外开发者推荐:10个顶级2D游戏资源站
查看>>