黑马程序员-我的第十二篇学习日记:OC中空指针,野指针,僵尸对象,retain和release基本使用

本文介绍了Objective-C中的内存管理概念,包括retain和release的基本使用方法及其注意事项。此外,还详细解释了空指针、野指针及僵尸对象的概念,并通过实例说明了如何避免常见的内存管理错误。
摘要由CSDN通过智能技术生成

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

一. 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

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

 

 


--------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值