ответ

7

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

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

+1

Предположим, что (по какой-то причине) я * хочу * хочу, чтобы он был выпущен прямо сейчас. «[[Obj сохранить] релиз]« действительный вариант? – noamtm

+2

Не совсем. В этом случае вы должны обернуть все это в @autoreleasepool {}, чтобы создать и уничтожить пул, в котором происходит автоматическое оповещение. –

+0

согласитесь, оберните все это в @autoreleasepool –

1

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

+0

Не глупо - я действительно хочу сделать то же самое! – Brad

0

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