iPhone:我泄漏的应用程序会伤害其他应用程序吗?

iPhone:我泄漏的应用程序会伤害其他应用程序吗?,iphone,memory-leaks,Iphone,Memory Leaks,因此,我完成了我的第一个iPhone应用程序的编写,并将其发送给了一组测试人员。 每个人都很高兴,除了这个家伙,他注意到在运行了我的应用程序之后,另一个应用程序不再启动了 由于不太了解内存管理,我开始查看仪器中的泄漏图表,并注意到我的应用程序中存在一些泄漏 三个问题: 泄漏总是很严重吗?在总共5.1MB的分配内存上,最大的泄漏是15k 苹果会因为泄密而拒绝我的应用程序吗 我的应用程序退出后,不是所有的内存都会自动释放吗?可能是我泄漏的应用程序对其他应用程序有害吗 谢谢 Sjakelien任何在应

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

由于不太了解内存管理,我开始查看仪器中的泄漏图表,并注意到我的应用程序中存在一些泄漏

三个问题:

  • 泄漏总是很严重吗?在总共5.1MB的分配内存上,最大的泄漏是15k
  • 苹果会因为泄密而拒绝我的应用程序吗
  • 我的应用程序退出后,不是所有的内存都会自动释放吗?可能是我泄漏的应用程序对其他应用程序有害吗
  • 谢谢
    Sjakelien

    任何在应用程序退出后仍然存在的漏洞都是操作系统错误,因此是苹果的问题

    基于此拒绝您的应用程序是不公平的。
    我不知道这对你是否有什么安慰

    作为记录,我的应用程序在mediaserverd中引发了漏洞。
    在3.0GM车型中,泄漏量稍微小一点

    API的另一次错误使用使mediaserverd崩溃。
    还有3.0克。肮脏的然而,我更喜欢错误代码

    从理论上讲,这可以用来解决漏洞。

    每个应用程序都应该在自己的“沙箱”中运行,并且从设计上讲,不应该影响手机上安装的任何其他应用程序。如果你的评论者发现你的应用确实影响了另一个应用,那肯定不是你的错,尽管我很想知道这是如何实现的;)


    不过,我的猜测是,你的评论者的另一个应用程序完全独立于你的应用程序出现故障,他/她错误地将故障归咎于你的应用程序。请他尝试重现问题(卸载两个应用程序,安装另一个应用程序,安装你的应用程序)。

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

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


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

    苹果确实批准存在内存泄漏的应用程序

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


    此外,我怀疑您的应用程序是否对用户的其他应用程序产生了负面影响。我没有看到这种行为。

    好吧,如果用户注意到你的应用程序能够影响另一个应用程序之后的运行方式,那么很明显,在你的应用程序退出后,你的代码的某些效果仍然存在。即使苹果没有注意到,你的评论者也会注意到。我们没有一个可复制的情况,所以说Sjakelien的应用程序影响了另一个应用程序未免太大胆了。我们只知道测试人员在运行Sjakelien的应用程序后才注意到另一个应用程序不起作用。你不必看太远就可以在iPhone操作系统中找到漏洞。“iPhone黑客”可以从这里开始:为了重现这个bug,我会说只要重新启动设备,运行你的应用程序,然后检查另一个是否损坏(或者重新启动,然后运行另一个,看看它是否正常工作)。mediaserverd对输入不太小心。我能做的最糟糕的事情就是吃掉CPU并导致缓冲循环(有效地消除所有音频/振动,直到用户重新启动设备)。还可以在应用关闭后很长时间内安排音频。遇到任何其他严重的崩溃?两次崩溃(1次在2.x上,1次在3.0上),2.x上有200k泄漏,3.0上有200bytes泄漏。这是垃圾。