OC内存管理基础

                                                    OC 内存管理基础

 

一. retain和release基本使用

使用注意:

1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作)

2.你不想再使用(占用)某个对象,就应该让对象的计数器-1(让对象做一次release)

3.谁retain , 谁release

4.谁alloc,谁release

如:

 int  main()

    {

     Person *p = [[Person alloc]init];         //计数器加1 ,值为1

     [p retain];       // 计数器加1,值为2

     [p release];    // 计数器减1 ,值为1

     [p release];    // 计数器减1 ,值为0;

     return 0;

    }

 

二. 空指针,野指针,僵尸对象

 

空指针:没有任何东西的指针(存储的东西是nil, Nall0)

 

给空指针发送消息不会报错

 

野指针:指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错

 

错误:EXC_BAD_ACCECC:访问一块坏的内存(已经被回收,已经不可用的内存)

 

如:int main()

 

    {

 

     Person *p = [[Person alloc]init];      //计数器加1 ,值为1

 

     [p release];          // 计数器减1 ,值为0.

 

     [p release];        // 野指针指向僵尸对象(不可用的内存)

 

     return 0;

 

    }

 

    会报经典错误:EXC_BAD_ACCECC:访问一块坏的内存(已经被回收,已经不可用的内存)

 

僵尸对象:所占用内存已经回收的对象,僵尸对象不能再使用

 

 

 

经典错误:message  sent  to deallocated  instauce  ox100109a10

 

意思是:给已经释放的对象发送了一条错误的消息

 

 

 

posted @ 2016-05-04 11:08  PengWenHao  阅读(147)  评论(0编辑  收藏  举报