Увеличится ли количество сохранений при добавлении в массив? - PullRequest
1 голос
/ 14 апреля 2011

Я просто хотел знать: будет ли увеличен счет сохранения объекта, если он будет добавлен в массив или словарь в Objective-C?Могу ли я освободить конкретный объект сразу после добавления его в массив или словарь?

Ответы [ 3 ]

5 голосов
/ 14 апреля 2011

Да, это увеличит количество сохраненных объектов, которые вы добавили, поэтому вы можете освободить объект сразу после добавления его в массив.

NSObject obj1;
obj1=[[NSObject alloc] init];
//obj1's retain count is 1 here.

[array1 addobject:obj1];
//obj1's retain count incremented by 1, so the total retain count is 2.

[obj1 release];
//obj1's retain count decremented by 1, so the total retain count is 1.

array1 будет сохранять объект до тех пор, пока сам массив1 не будет освобожден.

4 голосов
/ 14 апреля 2011

Харипрасад,

NS [имя коллекции здесь] сохраняет объекты, добавленные к ним, как отметил NSResponder. Несколько других фактов:

  1. К твоему комментарию "могу я его выпустить после добавления ", короткий ответ да. Часто я делаю autorelease для объектов, которые связан для сдерживания в коллекция и не понадобится за пределами коллекции.
  2. При удалении объект из коллекции, счетчик ссылок уменьшается. Если Вы хотите убедиться, что это не будет удалено из памяти (следующий пул выкинуть) нужно сохранить объект.
2 голосов
/ 14 апреля 2011

NSArrays сохранит любой объект, добавленный к ним.

...