检查保留计数

时间:2011-08-20 09:50:42

标签: iphone xcode4 dealloc retaincount

我这样做:

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]);

我得到了

retain count1 : 2 
retain count2 : 1

1)在dealoc函数中我可以获得如下消息:

- (void)dealloc{

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

并且2)最后我为 backgroundimage 得到了保留计数 1 ,所以没关系,或者它应该 0(零)

谢谢..

1 个答案:

答案 0 :(得分:3)

根据Apple docs

  

retainCount方法不考虑任何待处理的自动释放   发送给接收方的消息。

     

重要说明:此方法在调试内存中通常没有任何价值   管理问题。因为任何数量的框架对象都可能有   保留一个对象,以便保持对它的引用,而在   同时自动释放池可能持有任何数量的延迟   在一个对象上发布,你不太可能获得有用的东西   来自此方法的信息。要理解的基本规则   您必须遵守的内存管理,请阅读“内存管理”   规则”。要诊断内存管理问题,请使用合适的工具:   LLVM / Clang静态分析器通常可以找到内存管理   甚至在你运行你的程序之前的问题。 Object Alloc仪器   在Instruments应用程序(参见仪器用户指南)中可以跟踪   对象分配和破坏。鲨鱼(参见Shark用户指南)也   配置内存分配(在你的许多其他方面)   程序)。