Из чтения документации по управлению памятью в SDK я понял, что фабричные методы (статические методы конструктора) обычно сохраняют объект для меня и добавляют его в пул автоматического выпуска?
Да, вам не нужно беспокоиться о освобождении объектов, возвращаемых любым методом, кроме методов alloc
, init
, new
и copy
.
Это будет означать, что мне не нужно сохранять и освобождать объект, если пул не освобождается раньше, чем я ожидаю?
Да.
(Что должно быть в конце приложения для пула автоматического выпуска по умолчанию в main ()?)
Нет. Вы можете рассчитывать только на объект, находящийся рядом, до тех пор, пока не вернетесь к какому-либо методу или функции, в которой находитесь. Как правило, пулы авто-выпуска сбрасываются, когда управление возвращается в цикл выполнения.
Если вы хотите, чтобы экземпляр объекта выживал за пределами текущего метода, вы должны стать его владельцем, вызвав 'retain'. Затем вы также несете ответственность за «освобождение» экземпляра, когда он вам больше не нужен.
В вашем случае, если вы хотите, чтобы ваш NSMutableArray оставался без присмотра, вам нужно retain
его. Еще лучше, используйте [[NSMutableArray alloc] initWithCapacity: ];
См. Практическое управление памятью