黑马程序员-----内存管理(六)

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

ARC

1、概念

循环引用计数,是一个编译器特性与Java的垃圾回收机制属于运行时特性。即当编译器编译代码的时候会自定检测是否生成释放内存的代码。

 

2、ARC判断准则

只要没有强指针指向对象,就会释放对象。

 

3、指针分类

1>强指针:默认情况下,所有的指针都是强指针。

2>弱指针:__weak

 

4、ARC当中的@property

1>strong

用strong替换retain

@property (nonatomic, strong)Cat *c;

2>weak

weak用于对象

5、Xcode的ARC转换功能

1>将老的项目转成ARC


2>ARC和非ARC混合使用


①点击Xcode->点击Build Phases

②选择一个.m文件,并双击。

③在呼出的compiler flages当中输入-fno-objc-arc/-f-objc-arc

3>ARC和非ARC设置


6、ARC循环引用

1>原则:一端使用strong一端用weak

2>实例

//Person.h

@class Dog;

@interface Person :NSObject

@property (nonatomic, strong)  Dog *d;

@end

 

//Dog.h

@class Person

@interface Dog:NSObject

@property (nonatomic, weak) Person *p;

@end

//main.m

Person *p = [[Person alloc] init];

Dog *d = [[Dog alloc] init];


p.dog = d;

d.person = p;

7、小零碎

1>__weak Person *p = [[Person alloc]init];错误的写法,因为直接定义的弱指针指向对象,没有强指针就会在定以后直接释放。


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值