Внутри перебора массива удаляем его же объекты.

Часто вижу что некоторые личности реализуют метод так:

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];

NSMutableArray *items = [NSMutableArray arrayWithCapacity:[array count]];
for (NSString *object in array) {
if (object.intValue < 3 ) {
[items addObject:object];
}
}
[array removeObjectsInArray:items];

Вроде не к чему придраться, но есть…

Меттод removeObjectsInArray поиск обьектов реализован линейно и при большем количестве объектов в массиве заметно понижение производительности.

Способ по-лучше

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];

NSMutableArray *items = [NSMutableArray arrayWithCapacity:[array count]];
for (NSString *object in array) {
if (object.intValue < 3 ) {
[items addObject:object];
}
}
[array setArray:items];

Мы не тратим время на копирование значения во время изменения размера массива.

Рейтинг
( Пока оценок нет )
webnewsite.ru / автор статьи
Загрузка ...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: