IOS内存管理3&之保留环&弱引用&属性保存

IOS的闭环链接和属性的内存管理
     IOS过程中我们常常会遇到环链接:就是有A,B两个类。我们在A类和B类互相引用,是的程序可以正常运行。但是在整个程序的过程中两者之间都不能释放,从而造成内存泄露。

@implementation temp{

    id _thing;

}

-(void) setThing: (id)what{

    self->_thing = what;

}

temp *m1 = [temp new];

temp *m2 = [temp new];

m1.thing = m2;

m2.thing = m1;


此时就会出现弱连接的结构,解决方式是:_weak id _thing;

使用weak的原理是:在ARC中使用weak弱引用时,该对象会被及记录在一个暂存器列表上,当我们释放对象时会在暂存器列表进行查找,如果找到就会释放内存。所使用的指针就会被置为nil。


Strong是一个与weak相对应的属性

在我们所见到的UIkIt的应用中所有属性都是strong(也就是说strong是默认属性)。


retain:在内存储存中是count+1然后进行重新复制,就是说每次复制都会是ARC的计数器增加。

copy:是重新申请一个内存空间,然后count+1然后进行赋值。

assign:是清空赋值,然后进行复制。count没有加1(是默认属性)。


nonatomic:多线程安全,当多线程进行访问时访问器会对其进行加锁,防止在访问时进行改变同时也增加内存消耗。

atomic:多线程不安全,参照上面。

readonly&readwrite:readwrite(是默认属性)可以进行读写操作,readonly是只读。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值