ARC机制和autoreleasepool

 

内存管理原则(配对原则):只要出现了new,alloc,retain方法,就要配对出现release,autorelease

对象存入到自动释放池中,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作

autoreleasepool

大括号代表池子的作用域

@autoreleasepool{

//作用域
}

 典型例子1

    //1//不管你这个对象时在@autoreleasepool 之内创建的还是在之外创建的,只要你在池子中调用了autorelease那么这个对象就会被放入到池子中

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

    

    @autoreleasepool {

        

        [p autorelease];

        

    }

tips:只有在自动释放池的作用域中调用对象的autorelease方法才能够正确的讲对象放入到池子中

 

ARC机制

 

//ARC简单,不用程序员在去管理内存

 

在ARC中,指针分 强指针 与 弱指针

 

 

 

//只要有强指针指向一个对象,那么系统就不会回收该对象

 

//只要没有强指针指向对象,系统立即回收该对象

 

 

 

//弱指针不影响,对象被回收

 

 

 

tips:当类出现循环引用的时候

#import <Foundation/Foundation.h>

//#import "Person.h"

@classPerson;

 

@interface Car : NSObject

 

//@property (nonatomic,strong)Person * p;

 

//当出现类循环应用的时候,只需要把一方面的Strong引用改为weak,并且在.h文件中使用@class 类名的方式,通知.h文件类的存在

@property (nonatomic,weak)Person * p;

 

@end

 

 

//默认情况下,所有的指针都是强指针类型

 

posted @ 2014-05-27 13:31  Shdow_Walker  阅读(338)  评论(0编辑  收藏  举报