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