是否可以从内存中手动清除对象的内容?
特别是,我正在处理NSData
。我尝试过使用data.length = 0
和data.setData(NSData)
。
我知道ARC
会在超出其所属范围之后进入并清理,但是我可以在需要时手动强制执行此过程吗?
答案 0 :(得分:4)
我认为你对ARC有一些误解,我想澄清一下。 ARC的目标是确保不会发生内存泄漏。它负责在整个生命周期内跟踪对象,并确保在没有任何引用的情况下将其“释放”。
重要的是要注意“被释放”的内存并不意味着“用0来写所有内容”。
它只是意味着内存将被指定为未使用。当系统需要为新对象分配内存时,释放的内存成为分配的候选者。
然而,没有任何保证,这种重新分配将会发生,因此您释放的内存很可能包含您的原始数据,并且永远不会被覆盖。