内存管理

 
     a、alloc  retain  new   copy  会让计数器加1 ,release 会让计数器减1。
     b、dealloc 方法用于销毁对象,收回内存。其和 alloc 分配内存对应。dealloc方法不能被直接调用,而是由系统在销毁对象时调用。retain 和 release 对应。
     c、影响引用计数的方法: + alloc   -retain  -copy   -release    -autorelease
     d.自动释放池与自动管理不一样。
     e.dealloc不能直接调用,而是由系统在销毁对象时使用。
     f.当一个对象的引用计数器为0时,那么它将被销毁,内存被系统回收
     g. MRC与ARC选择需要ARC的文件双击,并在输入框中输入:-fobjc-arc,如果不要ARC则输入:-fno-objc-arc

 

#import <Foundation/Foundation.h>

#import "Student.h"

int main(int argc, const char * argv[]) {

  

    Student *s=[[Studentalloc]init];

    [s retain];

    NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];//创建一个自动释放池

    //如果想要给一个对象发送autorelease消息,必须将下面的代码写在创建自动释放池和销毁池之间

    [s autorelease];

    //只有当自动释放池release时,才会将池里面的对象进行一次release

    [pool release];

    NSLog(@"%zi",s.retainCount);

    [s retain];

    //自动释放池,当超出大括号之后,其包含的对象自动release,发送autorelease消息的代码需要放到大括号里

    @autoreleasepool{

        [s autorelease];

    }

    NSLog(@"%zi",s.retainCount);

    return 0;

}

posted @ 2015-11-02 17:38  风雨彩  阅读(104)  评论(0编辑  收藏  举报