所以,我写完了第一部iPhone应用程序,并将其发送给一组beta测试人员。 每个人都很高兴,除了这个人注意到在运行我的应用程序后,另一个应用程序不再启动了。
对内存管理不太了解,我开始查看Instruments中的Leaks图表,并注意到我的应用程序中存在一些泄漏。
三个问题:
由于 Sjakelien
答案 0 :(得分:8)
每个应用程序都应该在自己的“沙盒”中运行,并且设计不应该影响手机上安装的任何其他应用程序。如果您的评论员发现您的应用确实影响了其他应用的情况,那绝对不是您的错,尽管我很想知道这是如何完成的;)。
我的猜测是,您的评论者的其他应用程序完全独立于您的应用程序而破坏,并且他/她虚假地将错误归因于您的应用程序。请他尝试重现问题(卸载这两个应用程序,安装其他应用程序,安装应用程序)。
答案 1 :(得分:5)
另外两个答案说我同意,但没有人直接回答第一个问题(“漏洞总是坏”)。我会说是的,他们是。确实,您的程序可能会长时间与它们一起运行而不会出现问题。操作系统应该在终止后清理内存(除非操作系统中存在错误,如前所述)。但最终泄漏将成为某人在某些时候运行足够长时间的问题。此外,即使它不成为一个问题,最好的做法是始终修复你所知道的内存泄漏。
答案 2 :(得分:3)
任何超出应用程序退出的漏洞都是操作系统错误,因此也是Apple的问题。
在此基础上拒绝您的应用是不公平的 我不知道这对你有什么安慰。
为了记录,我的应用程序引发了mediaserverd的泄漏 泄漏量在3.0GM时略小一些。
API的另一个错误用法崩溃了 mediaserverd 3.0GM。讨厌。我更喜欢错误代码,但是 从理论上讲,这可以用来解决泄漏问题。
答案 3 :(得分:1)
这取决于你正在泄漏的“记忆”。您是否使用设备存储空间来缓存某些内容?从理论上讲,你可能已经耗尽了足够的空间而其他应用无法启动,因为它需要一定的可用空间。
如果我们正在谈论物理记忆,那么没有。当你的应用程序死了它就死了。你可以要求他们重启设备,看看他们是否有同样的问题。
答案 4 :(得分:1)
Apple会批准有内存泄漏的应用。
也就是说,在提交给Apple之前,我们彻底检查“我们的代码”没有泄露,因为用户不喜欢让应用程序突然关闭它们。我说“我们的代码”,因为框架中存在内存泄漏而不是你正在做的事情。因此Apple批准内存泄漏的应用程序。
此外,我怀疑您的应用是否对用户的其他应用产生了负面影响。我没有看到这种行为。