Могу я ранний выпуск объект автовыпуска?

т.е. заставил бы объект быть сразу выпущенным и не имел бы, чтобы быть выпущенным пулом, если бы я сделал это?

[[NSArray arrayWithCapacity:100] release];

Не может найти четкое объяснение в документах об этом.

5
задан Ranking Stackingblocks 4 May 2010 в 23:54
поделиться

3 ответа

Скорее всего, произойдет сбой, если объект обычно автоматически выпускается. autorelease означает «отложенный выпуск», поэтому он будет выпущен: чуть позже. Поскольку объект не будет существовать позже, когда вы освободите его вручную, вы, скорее всего, столкнетесь с ошибкой из-за того, что среда выполнения отправит сообщение -release вашему освобожденному объекту.

Редактировать: Обратите внимание, что если вы -сохраняете объектов, которые автоматически выпускаются, вы должны -выпускать их: вы становитесь владельцем.

7
ответ дан 14 December 2019 в 04:32
поделиться

Если вы не хотите, чтобы объект попал в пул автоматического освобождения, вы можете вручную выполнить alloc и initWithCapabity . Если вы это сделаете, вам придется вручную выпустить его в какой-то момент.

0
ответ дан 14 December 2019 в 04:32
поделиться

Теперь я понимаю, что это глупо, и что я не должен выпускать то, что мне не принадлежит.

1
ответ дан 14 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: