Как освободить статические переменные Objective-C
qaru.site/info/6586/...
Ответы
Ответ 1
Не следует ли выделять переменные static
? Если да, где в коде должны быть выпущены? Если нет, почему бы и нет?
Это зависит. Если переменная инициализируется только один раз и должна оставаться на всю жизнь приложения, то нет, ее не следует отпускать (ее память по существу будет освобождена, когда приложение выйдет, во всяком случае). Если, однако, значение статической переменной изменяется, то да, предыдущий объект должен быть выпущен, когда статическая переменная установлена на новый объект.
Ответ 2
Как уже обсуждался принятый ответ на этот вопрос, освобождение статических переменных невозможно. Они действуют как глобальные переменные, которые видны только вашей функции со временем жизни, пока ваша программа.
Если вас беспокоит раздувание из-за переменных, к которым эта статическая переменная держится, вы должны (каким-то образом) освободить эти ссылки. Таким образом, например, если ваша статическая переменная является NSMutableArray, и вы продолжаете добавлять объекты внутрь, она всегда будет расти, если вы в какой-то момент не освободите массив.