т.е. заставил бы объект быть сразу выпущенным и не имел бы, чтобы быть выпущенным пулом, если бы я сделал это?
[[NSArray arrayWithCapacity:100] release];
Не может найти четкое объяснение в документах об этом.
Скорее всего, произойдет сбой, если объект обычно автоматически выпускается. autorelease
означает «отложенный выпуск», поэтому он будет выпущен: чуть позже. Поскольку объект не будет существовать позже, когда вы освободите его вручную, вы, скорее всего, столкнетесь с ошибкой из-за того, что среда выполнения отправит сообщение -release
вашему освобожденному объекту.
Редактировать: Обратите внимание, что если вы -сохраняете
объектов, которые автоматически выпускаются, вы должны -выпускать
их: вы становитесь владельцем.
Если вы не хотите, чтобы объект попал в пул автоматического освобождения, вы можете вручную выполнить alloc
и initWithCapabity
. Если вы это сделаете, вам придется вручную выпустить
его в какой-то момент.
Теперь я понимаю, что это глупо, и что я не должен выпускать то, что мне не принадлежит.