Повторное использование объектов в цикле при добавлении в NSMutableArray - PullRequest
0 голосов
/ 05 января 2010

При добавлении объектов в NSMutableArray в цикле, какие рекомендации по повторному использованию памяти, выделенной для объектов, которые должны быть добавлены в массив?

Например:

for (int i = 0; i < 5; i++)
{
    SampleObject *sampleObject = [[SampleObject alloc] init];
    sampleObject.someProperty = ...

    [sampleObjectArray addObject:sampleObject];
    [sampleObject release];
}

Это правильный подход?У меня есть sampleObjectArray как свойство с (nonatomic, retain) на нем.Должно ли оно быть скопировано, а не сохранено?

Разве не было бы лучше выделить из цикла, а затем освободить после его завершения?

1 Ответ

4 голосов
/ 05 января 2010

Вы профилировали свой код и обнаружили, что это проблема для вас? Если нет, не беспокойтесь о микрооптимизации.

Тем не менее, массивы поддерживают строгие ссылки на объекты, которые они содержат - когда завершается вызов addObject:, sampleObjectArray сохраняет значение sampleObject. Так что я думаю, что ваш пример кода является подходящим - вы alloc / init объект, поэтому вы release подходите, и он удерживается только массивом, в котором он живет.

Что касается alloc выхода из цикла, я не уверен, что это сработает - вам все равно придется alloc для каждой записи в массиве, чтобы не получить пять копий одного и того же объекта , Лучше всего это сделать в цикле, и если он находится в цикле a , почему бы не в цикле такой же , как у того, который у вас уже есть?

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