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