Как я могу вручную обнулить память?
Можно ли вручную удалить содержимое объекта из памяти?
В частности, я имею дело с NSData
, Я пытался использовать data.length = 0
а также data.setData(NSData)
,
я знаю ARC
придет и вычистит его после того, как он выйдет за рамки, кому он принадлежит, но можно ли вручную принудительно запустить этот процесс, когда я захочу?
1 ответ
Я думаю, у вас есть некоторые неправильные представления об ARC, которые я хотел бы прояснить. Целью ARC является предотвращение утечек памяти. Он отвечает за отслеживание объекта в течение его жизненного цикла и обеспечение его "освобождения", когда на него не осталось ссылок.
Важно отметить, что "освобождение" памяти не подразумевает "запись поверх всего этого с нулями".
Это просто означает, что память будет обозначена как неиспользованная. Освобожденная память становится кандидатом на выделение, когда системе необходимо выделить память для новых объектов.
Однако нет никакой гарантии, что это перераспределение произойдет, поэтому ваша освобожденная память вполне может содержать ваши исходные данные и никогда не будет перезаписана.