Возвращает ли NSString из NSArray objectAtIndex в качестве автоматического выпуска или сохраняет - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть строка, возвращенная из массива, просто интересно, нужно ли мне ее освобождать после ее использования.

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

Взгляните на этот пост в блоге, который отлично обобщает правила управления памятью в Objective C: http://interfacelab.com/objective-c-memory-management-for-lazy-people/.

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

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

1 голос
/ 06 декабря 2011

Объекты, возвращаемые из -objectAtIndex:, технически оба.

Код выглядит примерно так:

 -(id) objectAtIndex:(NSUInteger) index
 { 
      return [[objects_[index] retain] autorelease];
 }

То есть они не принадлежат вам, но если вы удалите егоиз массива он не будет немедленно освобожден.

0 голосов
/ 06 декабря 2011

autoreleased.

То есть с (почти?) Любым объектом, возвращаемым методом, было бы слишком сложно управлять памятью, если бы не было. Вот почему мы все любим авто-релиз.

...