Цель C, вернуть массив - PullRequest
0 голосов
/ 15 марта 2011
 -(NSArray*)getNeighbors{
      NSArray *values = [neighbors allValues];//neighbors is NSMutableDictionary
      return values;
 }

У меня есть очень простой код, подобный этому, но я не уверен, что мне нужно добавить «сохранить» ...

Ответы [ 4 ]

2 голосов
/ 15 марта 2011

Ты не.Метод, который вызывает getNeighbors, должен позаботиться о сохранении возвращенного массива.

1 голос
/ 15 марта 2011

Это зависит от того, что вы собираетесь делать с возвращаемым значением.- [NSArray allValues] возвращает новый массив, который автоматически высвобождается, поэтому, если вы планируете использовать этот массив в течение длительного времени (вне области действия функции), вы должны сохранить его (но не в - (NSArray *) getNeighbors).Сохранить массив (если необходимо снаружи):

-(void) foo {
    ivar_array = [[someObject getNeighbors] retain];
}

ИЛИ случай, когда вам не нужно сохранять:

-(void) foo {
   NSArray* array= [someObject getNeighbors];
   //do something with that array
}
0 голосов
/ 22 апреля 2011

Ты не.Эта страница ( 1 ) содержит подробное объяснение.

0 голосов
/ 15 марта 2011

Вы можете отправить retain и release каждому объекту, унаследованному от NSObject, в зависимости от ваших потребностей. Но в вашем случае values - это объект, которым вы не владеете, и вы должны позаботиться о том, как с ним обращаться. За дополнительной информацией обращайтесь Владение и распоряжение объектом

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