ios笔记一《对于内存操作的了解》

在ios中我们一般用ARC或MRC进行内存管理,ARC(个人认为真是个伟大的发明)意思是自动引用计数器,MRC(现在很少项目用)就是手动引用计数器。说到内存管理与它关联的就是关键字,这里我主要针对ARC来说。

那我们先说说assgin、copy、retain。

(1)assgin 只赋值,不改变索引计数,一般用于基础数据

相当于为对象添加了别名,有点不安全啦,要注意,只要有其中一个释放了,其它都不知道,会产生野指针

     (2)copy 建立索引为1的新对象,释放旧对象,一般用于字符串对象和block块(闭包)

相当于内存地址的复制,使用copy创建索引计数为1相同值的内存地址

(3)retain 释放旧对象,将值赋于输入对象,再增加输入对象的索引计数为1

相当于指针的赋值,多个指针指向同一块内存地址,使用retain索引计数增加1

copy、retain两个之间有什么区别呢,用一个网上的说法,使用copy相当于复制一个一模一样的人,以后他长多高或者有什么变化都与你无关,而retain呢,相当于你的影子,你有多高他有多高,你有多胖,他有多胖。

然后我们来说说strong和weak的区别

     (4)strong 修饰强引用与retain雷同一般用于数组对象、字典对象等

     (5)weak 修饰弱引用一般用于UI组件

strong、weak两个有什么区别,举个网上的例子,strong就像有很多人用绳子牵着同一条狗,只有全部人都放开了绳子,那条狗才会走掉(相当于内存释放),weak就像旁边看狗的人,只有人家牵着狗它才能看到狗,它没有权利决定狗的去留,主要的区别就是有没有决定内存的释放,假设一个对象中拥有两个strong的成员变量与多个weak成员变量,只要两个strong的内存都释放,那么不管有多少个weak成员变量对象都会释放掉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值