【问题标题】:Iphone SDK Utility Application template has leakIphone SDK Utility Application 模板有泄漏
【发布时间】:2010-11-18 01:13:24
【问题描述】:

我只是创建一个带有实用程序模板的项目。 当我按下“信息按钮”时,此模板存在本机内存泄漏 翻转视图。

任何人都知道我该如何解决这个泄漏??? 我只是用这个模板做了一个新项目, 我不添加新对象。

【问题讨论】:

  • 您使用的是什么 SDK 版本?
  • 我在 Snow Leopard 上使用 SDK 3.0 和 Xcode 3.2

标签: iphone objective-c memory-leaks utility


【解决方案1】:

我遇到了同样的问题,但能够理解为什么会这样。我在article

中提供了有关此问题的简要信息

可能对你有用。

【讨论】:

    【解决方案2】:

    这样做有泄漏:

    XCode 3.2--

    文件、新项目、基于导航的应用程序
    给它起个名字
    构建它
    使用性能工具运行 -> 泄漏

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

    运行大约 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];
    }
    

    我打破了导航控制器(进行了单独的分配和释放)并注释掉了 addSubview: 操作 - 没有泄漏 - 显然,屏幕是空白的。

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

    【讨论】:

      【解决方案3】:

      我在真正的 ipod touch 上试了一下。没有报告泄漏。 可能只是一个模拟器的东西......

      【讨论】:

        【解决方案4】:

        这一定是一个错误。它出现在 Apple 自己的示例 PageControl 中,可在此处找到: http://developer.apple.com/iphone/library/samplecode/PageControl/index.html#//apple_ref/doc/uid/DTS40007795

        【讨论】:

          【解决方案5】:

          希望这会有所帮助。

          发件人:http://www.cocos2d-iphone.org/forum/topic/2460

          “模拟器存在与单例和 llvm 相关的错误,这些错误被 Instruments 错误报告。请始终检查设备本身的泄漏情况。”

          【讨论】:

            【解决方案6】:

            Leaks 也为我在 CoreGraphics 中标记了 open_handle_to_dylib_path;这里肯定有标记。因为它最重的时候只有 256 字节,所以我向 Apple 发送了一个错误报告并称它完成了。然后,您可以在 Leaks 的配置中设置规则以忽略该报告。

            正如 bbum 指出的那样,工作中可能存在严重的巫术。我严重怀疑 Apple 是否会让有漏洞的框架通过 QA——尤其是因为它很容易重现。

            【讨论】:

              【解决方案7】:

              这可能是泄漏,也可能不是泄漏。如果您要添加分配的回溯,那将很有帮助。

              这很可能不是泄漏,而是由 dyld 隐藏的一些簿记信息泄漏/Instruments 无法追踪。

              鉴于它是 128 字节,我猜只有其中一个,我鼓励您通过 http://bugreport.apple.com 提交错误,然后暂时忘记它,因为在不太可能的情况下它确实是泄漏,您将同样不可能从您的应用程序中修复它。

              【讨论】:

                【解决方案8】:

                在当前 SDK 实用程序模板中没有泄漏。您是如何得到模板中存在泄漏的印象的?它只是分配视图所需的内存。

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

                【讨论】:

                • 嗨,我正在从 Utility Application 模板创建一个新项目,并使用 Instruments 运行它,这向我展示了两个泄漏。我得到:泄漏对象:Malloc 128 字节大小:128 字节负责库:CoreGraphics 负责框架:open_handle_to_dylib_path
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-05-14
                • 1970-01-01
                • 2011-01-27
                • 1970-01-01
                • 1970-01-01
                • 2010-12-18
                • 1970-01-01
                相关资源
                最近更新 更多