iPhone SDK实用程序模板存在内存泄漏问题

13

我只是使用“实用程序应用程序模板”创建了一个项目。 当我点击“信息按钮”翻转视图时,这个模板会出现本地内存泄漏。

有人知道怎样解决这个内存泄漏问题吗? 我只是从这个模板创建了一个新项目,并没有添加新的对象。


你使用的是哪个SDK版本? - Tim
我正在Snow Leopard上使用Xcode 3.2和SDK 3.0。 - Hitcurst
8个回答

13

可能是内存泄漏,也可能不是。如果您能添加分配的回溯信息,那会很有帮助。

很有可能它不是一个内存泄漏,而是由dyld存储的一些簿记信息造成的泄漏/Instruments跟踪不到。

考虑到它只有128字节,而且我猜只有一个,我建议您通过http://bugreport.apple.com提交一个bug,并暂时不要管它,因为如果它真的是一个泄漏,您同样不太可能从应用程序内部修复它。


5

通过以下步骤找到泄漏点:

XCode 3.2--

文件 -> 新建项目 -> 基于导航的应用
给它取一个名字
编译它
使用性能工具运行 -> 泄漏

当 Instruments 出现时,点击泄漏(你可能需要点击底部看起来像四个盒子的小图标)

大约在运行后7秒钟,你应该可以看到泄漏点: -- Malloc 128 Bytes, some Address, 128 Bytes, CoreGraphics, open_handle_to_dylib_path

我追踪到 AppDelegate 中的这段代码:

//APPLE CODE
- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch    

    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
}

我将navigationController分开(进行了单独的alloc和release),并注释掉了addSubview:操作——没有泄漏——显然,屏幕是空白的。

直到我尝试添加子视图时才发生了泄漏。由于有许多添加子视图的方法,我尝试了这些方法。每个方法都导致泄漏或空白屏幕。


5

2

我在真正的iPod Touch上尝试了一下,没有泄漏报告。可能只是模拟器的问题...


1

1

泄漏问题也已经标记了CoreGraphics中的open_handle_to_dylib_path,这里肯定有什么问题。由于它最多只有256字节,我向苹果提交了一个错误报告并将其标记为完成。您可以在Leaks的配置中设置规则以忽略此报告。

正如bbum所指出的那样,可能存在严重的巫术。我非常怀疑苹果会让泄漏的框架通过QA - 特别是因为很容易复制。


0

我曾经遇到过同样的问题,但是最终理解了为什么会出现这种情况。在这篇文章中,我简要介绍了这个问题。

希望对你有所帮助。


0

在当前的SDK实用模板中没有泄漏。你是怎么得出模板有泄漏的印象的?它只是为视图分配所需的内存。

泄漏是指没有指针存在且无法再释放的内存。


嗨,我使用实用程序应用程序模板创建了一个新项目,并在Instruments中运行它,结果显示有两个泄漏。 我得到的信息是: 泄漏对象:Malloc 128字节 大小:128字节 责任库:CoreGraphics 责任框架:open_handle_to_dylib_path - Hitcurst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接