【问题标题】:Memory Leak in Dismissing Modal View Controller关闭模态视图控制器中的内存泄漏
【发布时间】:2010-06-22 13:14:24
【问题描述】:

在名为 controller1 的控制器中,我正在推送一个模态视图控制器

     AddConversationViewController *addController = [[AddConversationViewController alloc] 
 initWithNibName:@"AddConversationViewController" bundle:nil];
 //addController.delegate = self;    
 UINavigationController *navigationController = [[UINavigationController alloc]
 initWithRootViewController:addController];
 [self presentModalViewController:navigationController animated:YES];
 [addController release];
 [navigationController release];

然后在那个 addcontroller 中,我分配了几个对象。但是在 dealloc 方法中,当我释放这些对象时,当我关闭模式视图控制器时,我会收到 BAD_ACCESS 警告。如果我不释放我分配的那些对象,它不会给出 BAD_ACCESS 警告。 我之前分配的那些对象不会被释放也不会被保留。

有人知道如何解决这个内存泄漏吗?

【问题讨论】:

  • 因此,您在 addcontroller 中创建一些对象的代码似乎与您的问题相关,而您发布的代码 - 不是...

标签: iphone objective-c cocoa-touch xcode


【解决方案1】:

使用 Xcode 3.2,您可以使用Clang Static Analyzer 来查看您的内存管理哪里出了问题。只需从“构建”菜单中选择“构建和分析”即可使用该工具。

【讨论】:

    【解决方案2】:

    我只能猜测,当您关闭 addController 时,您还没有释放 addController,而是释放了它的对象。

    那么,你能不能尝试把deallocate代码放到addController的dealloc方法中

    【讨论】:

    • 我就是这么做的。然后当我在 addcontroller 中调用 dealloc 方法并尝试删除我在 addcontroller 类中创建的那些对象时,我得到了 BAD_ACCESS。这很奇怪
    • 你直接调用 [addController dealloc] 吗? BAD_ACCESS发生在哪个方法的哪个代码行?
    • 在 addcontroller 中调用 dealloc 方法时发生错误访问。
    • 嗯,你能发布这些代码吗? addcontroller的dealloc方法?
    猜你喜欢
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2013-01-01
    相关资源
    最近更新 更多