Objective-C Перемещение элементов между массивами (Управление памятью) - PullRequest
2 голосов
/ 23 июля 2010

Есть ли практическая разница между следующими двумя фрагментами кода:

NSObject * obj = [[_mutableArrayOne objectAtIndex:i] retain];
[_mutableArrayOne removeObject:obj];
[_mutableArrayTwo addObject:obj];
[obj release];

и

NSObject * obj = [_mutableArrayOne objectAtIndex:i];
[_mutableArrayTwo addObject:obj];
[_mutableArrayOne removeObject:obj];

Ответы [ 4 ]

1 голос
/ 23 июля 2010

Оба одинаковы в отношении Memory Management и логики программирования.Только в первом случае вам нужно задействовать пару дополнительных retain/release операций.

1 голос
/ 23 июля 2010

Кроме необходимости звонить retain и release дважды, а не один раз, нет.Конечный результат тот же.

1 голос
/ 23 июля 2010

Если вы хотите владеть объектом в индексе 'i', то удалите объект из массива, а затем вы можете добавить его обратно в массив на более поздней стадии проекта.

Я предлагаю вариант 2 долженбудьте осторожны: объект больше не будет в массиве.

Результат будет другим - в варианте 1 у вас будет «объект» в изменяемом массиве, а в варианте 2 «объект» не будет в массиве(removeObject удалить все вхождения)

1 голос
/ 23 июля 2010

Только дополнительный цикл сохранения / освобождения, который вы просите сделать.

Это может оказать некоторое влияние на производительность в цикле чувствительной ко времени обработки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...