Czy mogę usunąć elementy, które przeglądam w pętli Objective-C for
bez efektów ubocznych?Usunąć elementy w pętli for bez efektów ubocznych?
Na przykład, czy to jest w porządku?
for (id item in items) {
if ([item customCheck]) {
[items removeObject:item]; // Is this ok here?
}
nie byłoby to pominąć 1 elementu ponieważ każdy element tablicy zostanie przesunięty o 1, gdy delecja dzieje. –
Nie, nie usuwamy elementu z ekranu za pomocą indeksu z tym przykładem. Metoda removeObject: NSMutableArray: przegląda tablicę i usuwa pierwsze odwołanie do znalezionego obiektu. Wewnętrznie wywołanie używa indexOfObject: i removeObjectAtIndex: aby to zrobić. Może to być hitem wydajności, jeśli masz wystarczająco dużą tablicę. Możesz nieco ją zoptymalizować, śledząc indeks, ale musisz go skorygować w celu usunięcia. – McCygnus