前言:我不是iOS开发人员,对iOS安全模型几乎一无所知。如果这个问题真的愚蠢,请原谅我。 :)
考虑一个名为MyApp的应用程序,它在启动时执行以下操作:
现在考虑以下情况:
我的问题:如果SomeOtherApp也动态分配内存,操作系统返回的缓冲区之一可能包含MyApp(现已关闭)调用所放置的敏感数据吗?
或者RAM的内容是否作为应用程序运行的沙箱的一部分处理?
答案 0 :(得分:-1)
理论上,一旦用户关闭应用程序(您必须确保应用程序已关闭而不仅仅是在后台运行),分配给该进程的内存将被释放并返回。
引用ARC的教程:
"启用自动引用计数后,编译器将自动在程序的正确位置插入保留,释放和自动释放。你不再需要担心这一点,因为编译器会为你做这件事。"
因此,当应用程序关闭时,将清除对具有某种内存分配的任何对象的所有引用,因为当应用程序未运行时将不会引用任何对象。
我之所以说你必须确保它已关闭是因为默认情况下,某些应用程序在您按下主页按钮时不会关闭,但实际上会继续在后台运行。这可能会造成潜在的安全威胁,但不太可能。为了确保该应用程序仍然保留NO内存,请确保每次都实际完全关闭。确保代码完成正确,并且正在编写代码的人知道并且正在跟踪他分配的内存。
如果安全性是一个大问题,那么请确保在代码中正确释放所有已分配的内存。然后确保你对内存泄漏进行了大量的测试,以确保没有任何对象留下一些内存。
我只想说,即使是ARC,我也不是专业的内存管理专家,所以最好先与其他几个来源核实,以确保我的答案是正确的。
如果我说错了,有人会打我。