Клонирование / Копирование NSMutableArray в Задаче C - PullRequest
8 голосов
/ 20 февраля 2011

Как массивы клонируются или копируются в другие массивы в Objective-C?

Я хотел бы иметь функцию, которая при передаче в NSMutableArray принимает массив и заполняет другой массив содержимым.

Это так просто, как someArray = passInArray?ИЛИ есть какая-нибудь функция initWith?

Ответы [ 2 ]

12 голосов
/ 20 февраля 2011

Это должно работать достаточно хорошо

[NSMutableArray arrayWithArray:myArray];

Кроме того, copy метод, вероятно, делает то же самое

[myArray copy];

Но простое назначение ничего не клонирует. Поскольку вы назначаете только ссылку (ваш параметр, вероятно, выглядит как NSMutableArray *myArray, что означает, что myArray является ссылкой).

5 голосов
/ 20 февраля 2011

Не возражайте, но ваш вопрос выглядит как дубликат deep-copy-nsmutablearray-in -jective-c ; Однако позвольте мне попробовать.

Да, это не так просто, вы должны быть немного осторожнее

/// will return a reference to myArray, but not a copy
/// removing any object from myArray will also effect the array returned by this function
-(NSMutableArray) cloneArray: (NSMutableArray *) myArray {
    return [NSMutableArray arrayWithArray: myArray];
}

/// will clone the myArray
-(NSMutableArray) cloneArray: (NSMutableArray *) myArray {
    return [[NSMutableArray alloc] initWithArray: myArray];
}

Вот статья документации Копирование коллекций

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