【问题标题】:iPhone: Can my Leaking App harm other apps?iPhone:我的泄漏应用程序会损害其他应用程序吗?
【发布时间】:2010-11-08 05:09:31
【问题描述】:

所以,我完成了我的第一个 iPhone 应用程序的编写,并将它发送给了一组 beta 测试人员。 每个人都很高兴,除了这个人注意到在运行我的应用程序后,另一个应用程序不再启动。

由于不太了解内存管理,我开始查看 Instruments 中的泄漏图,并注意到我的应用程序中发生了一些泄漏。

三个问题:

  1. 泄漏总是不好的吗?最大的泄漏是总共 5,1 MB 分配的内存上的 15k。
  2. Apple 会因为泄露而拒绝我的应用程序吗?
  3. 我的应用退出后,不是所有内存都自动释放了吗?会不会是我泄露的应用对其他应用有害?

谢谢 谢克林

【问题讨论】:

  • 好吧,如果用户注意到您的应用程序能够影响另一个应用程序之后的运行方式,那么显然您的代码的某些影响在您的应用程序退出后仍然存在。即使 Apple 没有注意到,听起来您的评论者可能会注意到。
  • 我们没有可重现的情况,所以说 Sjakelien 的应用程序影响了另一个应用程序过于大胆。我们只知道测试人员在运行 Sjakelien 的应用程序之后的某个时间才注意到另一个应用程序没有工作。

标签: iphone memory-leaks


【解决方案1】:

每个应用都应该在自己的“沙盒”中运行,并且设计上不应该影响手机上安装的任何其他应用。如果您的审阅者发现您的应用确实影响了另一个应用,那绝对不是您的错,尽管我很想知道这是如何实现的;)。

不过,我的猜测是,您的评论者的其他应用完全独立于您的应用而崩溃,并且他/她将错误归咎于您的应用。请他尝试重现问题(卸载两个应用程序,安装另一个应用程序,安装您的应用程序)。

【讨论】:

  • 您不必看得太远就能找到 iPhoneOS 中的错误。 “iPhone 黑客”可以从这里开始:openradar.appspot.com/search?query=iphone
  • 要重现该错误,我会说只需重新启动设备,运行您的应用程序,然后检查另一个是否损坏(或重新启动然后运行另一个以查看它是否仍然有效)跨度>
【解决方案2】:

我同意其他两个答案的说法,但是没有人直接回答第一个问题(“泄漏总是不好的”)。我会说是的。确实,您的程序可以长时间与它们一起运行而不会出现问题。并且操作系统应该在终止后清理内存(除非操作系统中存在错误,如前所述)。但最终,当某人运行足够长的时间时,泄漏将成为一个问题。此外,即使它没有成为问题,最好始终修复您知道的内存泄漏。

【讨论】:

    【解决方案3】:

    在您的应用程序退出后持续存在的任何泄漏都是操作系统错误,因此是 Apple 的问题。

    以此为由拒绝您的应用是不公平的。
    不知道对你有没有安慰。

    郑重声明,我的应用在 mediaserverd 中引发了泄漏。
    3.0GM 的泄漏量要小一些。

    API 的另一个错误用法崩溃 mediaserverd。
    还有3.0GM。可恶的。但是,我更喜欢错误代码
    这在理论上可以用来解决泄漏问题。

    【讨论】:

    • mediaserverd 对其输入并不十分小心。我能做的最糟糕的事情是占用 CPU 并导致缓冲区循环(有效地杀死所有音频/振动,直到用户重新启动设备)。还可以在您的应用关闭后很长时间安排音频。遇到过其他严重的崩溃吗?
    • 两次崩溃(2.x 上 1 次,3.0 上 1 次),2.x 上 200k 泄漏和 3.0 上 200 字节。很垃圾。
    【解决方案4】:

    这取决于您泄漏的是什么“内存”。您是否正在使用设备存储空间来缓存某些内容?从理论上讲,您可能已经使用了足够的空间,其他应用程序无法启动,因为它需要一定数量的可用空间。

    如果我们谈论的是物理内存,那么不是。当你的应用程序死了,它就死了。您可以要求他们重新启动设备,看看他们是否有同样的问题。

    【讨论】:

      【解决方案5】:

      Apple 确实批准存在内存泄漏的应用程序。

      也就是说,在提交给 Apple 之前,我们会彻底检查“我们的代码”是否泄漏,因为用户不喜欢应用突然关闭他们。我说“我们的代码”是因为框架中存在不是你做的内存泄漏。因此,Apple 会批准存在内存泄漏的应用程序。

      另外,我怀疑您的应用对用户的其他应用产生了不利影响。我没有看到这种行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2011-01-05
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        相关资源
        最近更新 更多