2011-08-20 70 views
1

我这样做:检查保留计数

UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mainback.jpg"]]; 

[self.view addSubview:backgroundImage]; 
NSLog(@" retain count1 : %d " , [backgroundImage retainCount]); 
[self.view sendSubviewToBack:backgroundImage]; 

[backgroundImage release]; 
NSLog(@" retain count2 : %d " , [backgroundImage retainCount]); 

我dealoc功能得到

retain count1 : 2 
retain count2 : 1 

1)我能得到这样的消息:

- (void)dealloc{ 

NSLog(@" retain count2 : %d " , [backgroundImage retainCount]); 
[super dealloc]; 
} 

; 2)在最后我得到保留数对于backgroundimage所以它我s ok或应该是0(零) ??

谢谢..

+1

不,你不应该使用它。 为我节省了解释它检查[这一点] [1] [1]:http://stackoverflow.com/questions/4636146/when-to-use-retaincount –

回答

3

按照Apple docs

的retainCount方法不占任何未决的自动释放发送到接收器 消息。

重要提示:此方法在调试内存 管理问题中通常没有任何价值。因为任何数量的框架对象可能有 保留一个对象以保存对它的引用,而在 同一时间自动释放池可能在对象上保留任意数量的延迟 版本,这是非常不可能的有用的 来自此方法的信息。要了解必须遵守的内存管理的基本规则,请阅读“内存管理 规则”。要诊断内存管理问题,请使用合适的工具: 甚至在运行程序之前,LLVM/Clang静态分析器通常会发现内存管理问题 。 Instrument应用程序中的Object Alloc仪器 (请参见Instruments用户指南)可以跟踪 对象分配和销毁。鲨鱼(参见Shark用户指南) 配置文件内存分配(在您的 程序的许多其他方面)。

+0

感谢harkonian .. !! :) – iUser

+0

没问题。如果答案有帮助,请将其标记为已接受。 – memmons