1.autoreleasePool和autorelease

2016-11-30  本文已影响17人  Roader

iOS内存管理原则(配对原则):只要出现了new,alloc,retain,就一定要对应一个release,autorelease。

MRC模式下的两个关注点:

1、避免野指针:对象不再使用时,将它的指针变量赋值为nil。给nil发送任何消息都不会报错;

避免方式:在方法内创建对象时先初始化为nil,Person *p = nil;

2、避免内存泄漏:利用release方法直接释放,利用autorelease方法延迟释放;

2.1、autorelease作用:对象在池中调用autorelease方法后,将对象地址存入池中,并返回self(对象的指针地址),对池内池外创建的对象都有效;

2.2、autorelease应用场景:自定义类工厂方法(类名开头)时,用内部创建的对象调用此方法,再返回(系统提供的类名开头方法返回的都是autorelease对象,所以不会发生也指针错误);

2.3、autoreleasepool作用:池子销毁时,对自己内部对象进行一次release操作(通过操作对象的内存地址);

上一篇下一篇

猜你喜欢

热点阅读