IOS: как использовать NSMutableArray - PullRequest
1 голос
/ 25 июля 2011

В моем коде я должен хранить массив внутри другого массива: как лучше?

first:

NSArray *arrayTemp = myArray;

second:

NSMutableArray *arrayTemp = [[NSMutableArray alloc]init];
[arrayTemp addObjectsFromArray:myArray]; 
...instruction....
[arrayTemp release];

1 Ответ

3 голосов
/ 25 июля 2011

Делая arrayTemp = myArray, вы объявляете arrayTemp как новый указатель на существующий массив myArray.Это не копия (если вы поместите X в myArray [42], arrayTemp [42] также будет X).

Второй вариант выглядит так, как будто вы делаете копию своего массива, но все же массив значения копируются по ссылке (по указателю), когда вам кажется, что вам нужна копия "по значению".

Просто попробуйте:

NSArray *arrayCopy = [myArray copy];

Осторожно: с точки зрения управления памятью это эквивалентно retain или alloc/init: вы должны отпустить arrayCopy после использования.

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