У меня есть следующая проблема.У меня есть фрагмент кода, в котором я очень беспокоюсь о производительности (если честно, я стараюсь сделать ее максимально оптимизированной).
У меня есть что-то вроде этого:
NSArray *array = [someInstance getArray];
if (something) {
NSMutableArray *marray = [array mutableCopy];
[marray removeObject:someObject];
[marray insertObject:someObject atIndex:0];
array = marray;
}
Цель - переместить someObject
в начало массива - довольно просто.Однако дело в другом.Метод [someInstance getArray]
возвращает NSArray *
, но внутренне он также использует NSMutableArray
:
- (NSArray *)getArray {
NSMutableArray *array = [NSMutableArray new];
// do some stuff here
return array;
}
Я пытаюсь сохранить все мои интерфейсы, возвращающие неизменяемые коллекции.Но в приведенном выше случае я подумываю создать исключение из этого правила, поскольку меня очень заботит производительность в этом фрагменте кода.Поэтому я могу изменить метод getArray
на следующий:
- (NSMutableArray *)getArray {
NSMutableArray *array = [NSMutableArray new];
// do some stuff here
return array;
}
, а затем изменить свой ультраэффективный код следующим образом:
NSMutableArray *array = [someInstance getArray];
if (something) {
[array removeObject:someObject];
[array insertObject:someObject atIndex:0];
}
Имеет ли смысл указанное выше изменение всроки исполнения?