Objective-C Memory Leak on addSubview



泄漏工具警告我与这部分代码相关的内存泄漏:

[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 表示allocretain,-1 表示autorelease。通常,您永远不应该使用retainCount方法来确定对象的实际保留计数,也许这个答案会让您更深入地了解原因。每个allocretaincopy呼叫都应与releaseautorelease呼叫匹配。您应该在类dealloc方法中添加匹配的发布调用

-(void) dealloc {
    [_nav release];
    _nav = nil;
    [super dealloc];
}

不要使用手动内存管理,使用ARC,它会让你的生活更轻松:)

最新更新