removeObjectAtIndex вызывает «сообщение, отправленное в освобожденный экземпляр»

Я конвертирую некоторый код в ARC. Код ищет элемент в NSMutableArray, затем находит, удаляет и возвращает этот элемент. Проблема в том, что элемент освобождается сразу после "removeObjectAtIndex":

- (UIView *)viewWithTag:(int)tag
{
    UIView *view = nil;
    for (int i = 0; i < [self count]; i++)
    {
        UIView *aView = [self objectAtIndex:i];
        if (aView.tag == tag) 
        {
            view = aView;
            NSLog(@"%@",view); // 1 (view is good)
            [self removeObjectAtIndex:i];
            break;
        }
    }
    NSLog(@"%@",view); // 2 (view has been deallocated)
    return view;
}

Когда я запускаю его, я получаю

*** -[UIView respondsToSelector:]: message sent to deallocated instance 0x87882f0

во втором операторе журнала.

До ARC я старался сохранить объект перед вызовом removeObjectAtIndex :, а затем автоматически выпустить его. Как мне сказать ARC сделать то же самое?

6
задан lewisanderson 27 October 2011 в 09:03
поделиться