Как удалить строку из памяти по соображениям безопасности в iOS? Это даже нужно или iOS справиться с этим самостоятельно? - PullRequest
1 голос
/ 16 марта 2020

например. В целях безопасности я хочу убедиться, что текст, введенный пользователем для пароля, не останется в памяти после использования

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Насколько я знаю, Swift не дает никаких гарантий относительно того, что происходит с памятью после ее освобождения. Если вы хотите убедиться, что данные пароля не читаются в памяти, вы должны обнулить их самостоятельно.

Приятное обсуждение этого вопроса на форумах разработчиков Apple: https://forums.developer.apple.com/thread/4879

0 голосов
/ 19 апреля 2020

Я думаю, что он автоматически удаляется из памяти, поскольку Swift реализует концепцию AR C, где в iOS нет сборки мусора. Даже в Objective- C теперь команда автоматического освобождения не может быть вызвана при вызове метода программно, поскольку AR C обработал ее.

Из документации Swift:

Объекты, управляемые памятью

Объекты Core Foundation, возвращаемые из аннотированных API, автоматически управляются памятью в Swift - вам не нужно вызывать функции CFRetain, CFRelease или CFAutorelease самостоятельно.

...