Estoy convirtiendo algunos códigos en ARC. El código busca un elemento en un NSMutableArray, luego lo encuentra, lo elimina y lo devuelve. El problema es que el elemento se cancela la asignación inmediatamente después de "removeObjectAtIndex":removeObjectAtIndex provoca "mensaje enviado a la instancia desasignada"
- (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;
}
Cuando corro, me sale
*** -[UIView respondsToSelector:]: message sent to deallocated instance 0x87882f0
en la segunda declaración de registro.
Pre-ARC, tuve cuidado de conservar el objeto antes de llamar a removeObjectAtIndex :, y luego para liberarlo automáticamente. ¿Cómo le digo a ARC que haga lo mismo?
¿Qué '[removeObjectAtIndex auto: i];' hago? – hypercrypt