Не удается скопировать NSMutableArray в свойство - PullRequest
0 голосов
/ 25 января 2012

Я прочитал бесчисленные вопросы, связанные с копированием массивов как на этом сайте, так и на других, но ни один из них напрямую не решает мою проблему.

Я объявил и синтезировал свойство с именем arrXTurbulenceValues:

@property (weak, nonatomic) NSArray *arrXTurbulenceValues;

@synthesize arrXTurbulenceValues;

Я инициализирую массив в методе ViewDidLoad ():

self.arrXTurbulenceValues = [[NSArray alloc] init];

Некоторая обработка происходит в методе, где значения сохраняются в NSMutableArray.В конце этой обработки я пытаюсь глубоко скопировать NSMutableArray в свойство NSArray с помощью следующего кода:

                self.arrXTurbulenceValues = [[NSMutableArray alloc] initWithArray:tempXvalues copyItems:YES];

Копирование завершается неудачно, а self.arrXTurbulenceValues ​​остается нулевым.В массиве tempXvalues ​​содержится более 1900 объектов NSString, которые я пытаюсь скопировать.

Что я делаю не так?Я пробовал копировать код с & без инициализации в ViewDidLoad (), а также пытался настроить свойство как NSArray и NSMutableArray.

Отвечает ли NSString на NSCopying?Кажется, если я правильно читаю документы.

Среда iOS, связанная с Objective C, - это кошмар.Я никогда не видел ничего настолько привередливого, чтобы иметь дело с.Тьфу.

1 Ответ

2 голосов
/ 25 января 2012

Предполагая, что вы работаете в ARC, попробуйте изменить «слабый» на «сильный»:

@property (weak, nonatomic) NSArray *arrXTurbulenceValues;

на:

@property (strong, nonatomic) NSArray *arrXTurbulenceValues;

В конце вашего -viewDidLoadметод, нет более сильных ссылок на массив, и он освобождает (что также обнуляет все слабые ссылки на него)

...