【问题标题】:NSAutoReleasePool Leaks on allocWithZoneallocWithZone 上的 NSAutoReleasePool 泄漏
【发布时间】:2011-08-01 19:41:00
【问题描述】:

所以这让我困惑了一段时间。我在“配置文件”模式下运行我的应用程序,试图在我的应用程序中找到内存泄漏。当我单击应用程序的 Map 部分时,我想我得到了所有人的期望,它报告了对 NSAutoreleasePool 的引用从 Foundation Library 泄漏。我检查了对象的踪迹,但它只从方法allocWithZone 报告回来。无论我allocdealloc 那个视图控制器多少次,它似乎只泄漏一次。我搜索了我的代码,我对NSAutoreleasePool 的唯一引用是在 main.m 文件中。这是 Apple 的错误(我对此表示怀疑)还是我做错了什么?

ma​​in.m

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

【问题讨论】:

  • 如果您尝试存档(确保将其设置为为 iOS 设备构建),它将指出您的代码内存泄漏发生的位置。这是一种解决方法,但它帮助我找到了许多我无法通过堆栈跟踪找出的神秘错误。
  • 签入您的地图部件类文件,您正试图释放该类文件中可能引用其他类文件的任何对象,反之亦然。通过在您的 dealloc 或 viewDidUnlaod 或您要释放对象的任何位置逐行注释来检查它。

标签: iphone objective-c ios memory-leaks


【解决方案1】:

看起来这是一个 Apple 错误。在另一个问题中泄漏了相同数量的内存,这使我相信它们是同一个错误。我进行了广泛的代码审核,似乎没有任何东西可以消除泄漏。哦,我希望他们尽快修复它。 NSAutoReleasePool Leaks on allocWithZone

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    相关资源
    最近更新 更多