¿Puedo eliminar elementos que estoy recorriendo en un bucle Objective-C for
sin efectos secundarios?Eliminar elementos en un bucle for sin efectos secundarios?
Por ejemplo, ¿está bien?
for (id item in items) {
if ([item customCheck]) {
[items removeObject:item]; // Is this ok here?
}
No sería esto saltar 1 elemento, ya que cada elemento de la matriz se desplaza 1 cuando ocurre eliminación. –
No, no eliminaremos el elemento de la pantalla con un índice con este ejemplo. El método removeObject de NSMutableArray examina el conjunto y elimina la primera referencia al objeto que encuentra. Internamente, la llamada usa indexOfObject: y removeObjectAtIndex: para hacerlo. Esto podría ser un golpe de rendimiento si tienes una matriz lo suficientemente grande. Podrías optimizarlo un poco siguiendo el índice, pero luego tendrías que ajustarlo para eliminarlo. – McCygnus