1、后来苹果公司退出了ARC机制,就是不用我们再用代码去管理内存,系统自动帮我们管理。
a)在ARC机制中,所有的retain,release都不能再出现,取而代之的则是strong(强指针)和weak(弱指针)
b)默认情况下,所有的指针都是强指针类型
c)只要有强指针指向一个对象,那么系统就不会回收该对象;反之,则立即回收该对象
2、@property中的strong和weak属性
a)arc中的strong相当于非arc时的retain
b)arc中的weak相当于非arc时的assign
c)arc机制情况下不能再出现 [super dealloc];
d)基本数据类型依然使用assign修饰,对象一般用strong修饰
e)当arc机制下对象循环依赖时,这时weak就有用处,结合@class。否则都是strong对方会相互拉着对方,释放不了内存
Person.h
#import <Foundation/Foundation.h>
#import "Car.h"
@interface Person : NSObject
@property (nonatomic, strong)Car * car;
@end
Car.h
#import <Foundation/Foundation.h>
//#import "Person.h"
@class Person;
@interface Car : NSObject
//当出现类循环应用的时候,只需要把一方面的Strong引用改为weak,并且在.h文件中使用@class 类名的方式,通知.h文件类的存在
@property (nonatomic, weak)Person * p;
@end
3、非arc工程转换成arc工程
4、以上方法在一些大的项目可能不太使用,因为可能转换会很耗时,而且系统自动帮忙转换时避免不了会出错。
在实际开发中,若我们用到一些之前第三方的非arc文件,可以使用以下方法让它们运行在arc工程下