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

我有

retain count1 : 2 
retain count2 : 1

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

- (void)dealloc{

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

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

谢谢..

4

1 回答 1

3

根据苹果文档

retainCount 方法不考虑发送给接收者的任何挂起的自动释放消息。

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

于 2011-08-20T17:07:30.727 回答