Я написал класс для декларативного описания последовательности анимаций UIView. Мой метод берет различные анимационные блоки и помещает их в массив. Итак, в моем цикле я хочу сделать это:
[animations addObject:[[block copy] autorelease]];
Я сначала copy
блок, так что он перемещается в кучу, что позволяет retain
'редактировать массивом. Затем я автоматически освобождаю его, чтобы отказаться от владения (потому что массив сохраняет его).
Однако это происходит сбой, когда массив анимаций освобождается. (Насколько я понимаю, упомянутые блоки уже были освобождены.)
Странная вещь, это работает:
[animations addObject:[block copy]];
[block release];
ОБНОВЛЕНИЕ: -
... как это:
[animations addObject:[block copy]];
[block autorelease];
Почему? Я бы ожидал, что все 3 фрагмента кода будут работать одинаково хорошо. Любое объяснение?