iPhone:我的泄漏应用程序可以损害其他应用程序吗?

时间:2009-07-05 13:11:16

标签: iphone memory-leaks

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

对内存管理不太了解,我开始查看Instruments中的Leaks图表,并注意到我的应用程序中存在一些泄漏。

三个问题:

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

5 个答案:

答案 0 :(得分:8)

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

我的猜测是,您的评论者的其他应用程序完全独立于您的应用程序而破坏,并且他/她虚假地将错误归因于您的应用程序。请他尝试重现问题(卸载这两个应用程序,安装其他应用程序,安装应用程序)。

答案 1 :(得分:5)

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

答案 2 :(得分:3)

任何超出应用程序退出的漏洞都是操作系统错误,因此也是Apple的问题。

在此基础上拒绝您的应用是不公平的 我不知道这对你有什么安慰。

为了记录,我的应用程序引发了mediaserverd的泄漏 泄漏量在3.0GM时略小一些。

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

答案 3 :(得分:1)

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

如果我们正在谈论物理记忆,那么没有。当你的应用程序死了它就死了。你可以要求他们重启设备,看看他们是否有同样的问题。

答案 4 :(得分:1)

Apple会批准有内存泄漏的应用。

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

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