скопировать элемент NSmutableArray

Я копирую изменяемый массив следующим образом:

//copy players' info into playerList from a dictionary
playerList = [[NSMutableArray alloc] initWithArray:[params objectForKey:@"p"] copyItems:YES];

Элементы в массиве реализуют copyWithZone следующим образом:

- (id)copyWithZone:(NSZone *)zone
{
   PlayerInfo* copy = [[[self class] allocWithZone:zone] init];
   [copy setNick:[self nick]];
   ...
   [copy setIsChallengedByMe:[self isChallengedByMe]];

   return copy;
}

Однако в playerList есть только объекты, которые «выходят за рамки». Что я делаю неправильно?


person Daniel    schedule 16.08.2010    source источник
comment
Кстати, вы можете использовать более простой playerList = [params objectForKey:@p] mutableCopy].   -  person mrueg    schedule 16.08.2010
comment
Что означает, что объект находится вне области видимости? Переменные имеют области видимости, а не объекты.   -  person Chuck    schedule 16.08.2010
comment
Я имел в виду, что playerList - это массив переменных вне области видимости.   -  person Daniel    schedule 16.08.2010
comment
@Chuck: я думаю, он имеет в виду что-то об управлении памятью, например, вы уже выпускаете объект, но некоторые указатели все еще указывают на него.   -  person vodkhang    schedule 16.08.2010
comment
Нет, я имею в виду, что я хочу использовать объект, который я только что скопировал в playerList, и я получаю null. Если я отлаживаю его и останавливаю на следующей строке, он уже говорит мне, что объект с индексом 0 выходит за рамки... даже если копирование было выполнено, как ожидалось.   -  person Daniel    schedule 16.08.2010


Ответы (1)


Я предполагаю, что вы имеете в виду, что в отладчике они отображаются «вне области действия». Не беспокойтесь об этом, это довольно распространено и не обязательно означает, что что-то не так. Если вы напечатаете описание массива на консоли, все должно быть в порядке.

person JeremyP    schedule 16.08.2010