Autoreleasepool内存泄漏?

时间:2012-01-31 16:21:51

标签: iphone objective-c xcode

我是Xcode 4.2的新手,因为我的项目差不多完成了,我想我会尝试Apple提供的一些工具。所以,我跑了Leak,显然,它在应用程序启动时直接发现泄漏。我在“泄漏”部分得到一个坚实的橙色垂直条,当我调查时,似乎这是罪魁祸首:

    int main(int argc, char *argv[])
    {
        @autoreleasepool {
//problem appears on the line below in Orange
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([TestProjectAppDelegate class]));
        }
    }

由于我是新手,我不知道问题是什么,如何解决,或者即使我找到了实际问题!

(某处应该没有“排水”电话吗?)

非常感谢任何帮助。

EDIT 链接到屏幕截图文件:http://whoit.home.comcast.net/~whoit/combined.jpg (太大而无法嵌入)

2 个答案:

答案 0 :(得分:2)

点击Leak选项窗格中的invert call tree

而且,如果可能的话,也许您可​​以为此视图添加屏幕截图:

Leaks

答案 1 :(得分:0)

用这个替换整个@autoreleasepool块:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([TestProjectAppDelegate class]));
[pool release];

return retVal;

如果您仍然看到相同的泄漏,那么您的代码中的其他地方就会出现过度保留问题,而且此部分不是问题。如果仍然看到它(不太可能),那么这种新语言结构可能会出现问题。极不可能,但这是一个新的结构,所以肯定会有错误。