ARC原理及强弱指针

一、Xcode使用ARC来对内存进行管理,并不是像JAVA一样的垃圾回收机制,ARC不负责回收内存,而是在代码合适的地方插入合适的内存管理代码(retain、release、autorelease)。
ARC中,判断对象是否该销毁靠的是“强指针”,而不是MRC中的引用计数器,默认的指针都是强指针。所以在ARC中要提前释放一个对象,只需要设置指向该对象的指针为空即可:p = nil;因为当没有强指针指向这个对象时,这个对象就会被销毁。

强指针

__weak弱指针对所指的对象没有拥有权(就是指着而已),一旦弱指针所指的对象销毁了(再也没有其他强指针指着了),这个弱指针就会被置为nil,不会变成野指针,这也是ARC的智能之处。

注意:创建对象时,不能使用弱指针来引用,否则刚创建的对象因为被弱指针指着立马就被销毁了没有任何意义,所以创建对象一定是用强指针来引用,然后才可以将这个对象赋给其他弱指针变量使用。

这里写图片描述

弱指针属性示例

注:@property (nonatomic,strong)Person *person;
@property (nonatomic,weak)Dog *dog;
strong和weak都是来修饰对象属性的,对于基本数据类型属性依然用assign来修饰。

二、循环引用
这里写图片描述
解决办法:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值