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操作(通过操作对象的内存地址);