Я конвертирую некоторый код в 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
во втором операторе журнала.* Pre-ARC, я был осторожен, чтобы сохранить объект перед вызовом removeObjectAtIndex:, а затем автоматически высвободить его.Как мне сказать ARC сделать то же самое?