Сборщик мусора всегда имеет нагрузку на память и процессор, поэтому на микроконтроллере этого следует избегать. Возможно, вы захотите использовать простой старый счетчик ссылок. Работает очень хорошо для Objective-C, каждое приложение для iPhone / iPad / iPod Touch использует его и многие (большинство?) Приложений Mac. Вы делаете это так:
Ваш базовый класс объекта имеет целое число, счетчик ссылок. Как только объект выделен, счетчик устанавливается на 1. Существует метод retain
, который увеличивает счетчик, и метод release
, который уменьшает счетчик. Как только release
заставляет счетчик достигать 0, вызывается деконструктор и объект освобождается (освобождается).
Вы должны быть осторожны, чтобы избежать сохранения циклов, то есть объектов, которые сохраняют друг друга, как на A <-> B или A -> B -> C -> A, так как счетчик ссылок не может опуститься до 0, и вы будет утечка памяти. Apple решает эту проблему путем именования и других соглашений (например, если у объекта есть делегат, делегат никогда не сохраняется).
Преимущество подсчета ссылок состоит в том, что он, вероятно, является лучшим методом «сборки мусора» для поддержания минимального объема памяти. Это память и загрузка процессора довольно низка. Основным недостатком является то, что вышеупомянутые ссылочные циклы являются проблемой, и вам также необходимо явно сохранить / освободить в вашей программе, поскольку язык не сможет угадать, когда не сохранить.