Object-C retainCount

本文介绍Objective-C中的内存管理机制,包括引用计数器的工作原理、如何通过alloc、new和copy方法初始化对象,以及如何使用retain和release方法来管理对象的生命周期。此外,还介绍了调试内存管理问题时使用的工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每一个从Cocoa根类NSObject或其子类创建的对象,都象有一个与之相关联的整数,称作它的引用计数器或者保留计数器。


1.当使用alloc,new方法或者copy消息创建一个对象时,对象的保留计数器值被设置为1

2.向对象发送retain信息,保留计数加1

3.向对象发送一条release信息,保留计数减1

4.当对象因其计数器为0时,objective-c将向对象发送一条dealloc消息,执行对象的dealloc方法释放资源


你可以在自己的对象中重写dealloc方法,可以通过这种方法释放已经分配的全部相关资源。一定不要直接调用dealloc方法。


在代码中,你可以通过调用NSObject对象的retainCount可以返回对象的引用计数。


但retainCount这个方法在调试内存管理问题是不价值的,因为很多的框架对象会保持对象计数,你不可能通过个方法获得有用的信息。


为调试内存管理问题,你可以使用这三个工具


The LLVM/Clang Static analyzer 在程序运行之前,静态分析代码,找出典型常见的内存管理问题,如malloc,release不对称引起潜在内存泄露问题。

Instruments application 的 Object Alloc instrument 可以跟踪程序中每个对象 的创建、销毁的过程.

Shark 也是一个可以进行内存分配分析的工具.

这三个工具是Xcode自带的工具,功能非常强大,是每一个Mac\iPhone开发者都应该熟悉掌握的工具。


参考文章:


1.NSOjbect Protocal reference
http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Protocols/NSObject_Protocol/index.html


2.用Instruments查找iphone 内存泄露的教程
Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial
Instruments这个工具,可以分析iphone模拟器,也可以分析iPhone,iPod真机上运行的程序。

3.序报一个 EXC_BAD_ACCESS 内存访问异常,如访问一个已经release的内存指针时,造成程序崩溃也可以用Instruments这个工具来分析,具体可以参考这个教程
iPhone Memory Debugging with NSZombie and Instruments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值