简单讲解Objective-C的基本特性及其内存管理方式

2020-01-14 18:31:27于丽


(b)Ios5.0以后
复制代码
@autoreleasepool

 

{//开始代表创建自动释放池

·······

}//结束代表销毁自动释放池


(7)Autorelease注意

 

(a)系统自带的方法中,如果不包含alloc new copy等,则这些方法返回的对象都是autorelease的,如[NSDate  date];

(b)开发中经常会写一些类方法来快速创建一个autorelease对象,创建对象时不要直接使用类名,而是使用self

 

8、ARC内存管理机制

(1)ARC的判断准则:

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

(2)指针分类:

(a)强指针:默认的情况下,所有的指针都是强指针,关键字strong

(b)弱指针:_ _weak关键字修饰的指针

声明一个弱指针如下:

复制代码
_ _weak Person *p;
ARC中,只要弱指针指向的对象不在了,就直接把弱指针做清空操作。
复制代码
_ _weak Person *p=[[Person alloc]  init];//不合理,对象一创建出来就被释放掉,对象释放掉后,ARC把指针自动清零。
ARC中在property处不再使用retain,而是使用strong,在dealloc中不需要再[super dealloc]。

 

@property(nonatomic,strong)Dog *dog;// 意味着生成的成员变量_dog是一个强指针,相当于以前的retain。

如果换成是弱指针,则换成weak,不需要加_ _。

 

(3)ARC的特点总结:

(a)不允许调用release,retain,retainCount

(b)不允许重写dealloc,但是不允许调用[super dealloc]

(c)@property的参数:

Strong:相当于原来的retain(适用于OC对象类型),成员变量是强指针

Weak:相当于原来的assign,(适用于oc对象类型),成员变量是弱指针