泄漏工具警告我与这部分代码相关的内存泄漏:
[self.contview addSubview:nav.view];
以下是我管理视图的方法:
[nav.view removeFromSuperview];
self.nav = [[[destinationClass alloc] initWithNibName:pagename bundle:nil] autorelease];
[self.contview addSubview:nav.view];
self.nav 在分配后保留计数为 2 是否正常?这可能与内存泄漏有关吗?
我对内存管理很陌生,有人可以给我一些帮助吗?
非常感谢
假设nav
是一个强(保留(属性,它保留您在此处分配的视图控制器:
self.nav = [[[destinationClass alloc] initWithNibName:pagename bundle:nil] autorelease];
实际上,此行代码后的保留计数为 1; +2 表示alloc
和 retain
,-1 表示autorelease
。通常,您永远不应该使用retainCount
方法来确定对象的实际保留计数,也许这个答案会让您更深入地了解原因。每个alloc
、retain
或copy
呼叫都应与release
或autorelease
呼叫匹配。您应该在类dealloc
方法中添加匹配的发布调用
-(void) dealloc {
[_nav release];
_nav = nil;
[super dealloc];
}
不要使用手动内存管理,使用ARC,它会让你的生活更轻松:)