В моем viewDidLoad
self.day19 = [[NSMutableArray alloc] init];
В myMethod, где я хочу добавить объекты в массив I:
NSObject *newObject = [[NSObject alloc] init];
[day19 addObject:newObject];
Однако ... когда я проверяю день19В массиве ничего нет.Если я, наоборот, добавлю newObject в tempArray в области myMethod, а затем установлю для массива day19 значение tempArray, у day19 будут объекты.
Позвольте мне угадать: вы проверили массив с помощью кода, подобного следующему:
NSLog(@"day19 contains %lu objects", [day19 count]);
Помните, что сообщение для nil
ничего не делает и возвращает nil
, 0
или 0.0
.Вот почему в выводе указано 0 объектов: во-первых, у вас нет массива.Наиболее вероятная причина этого заключается в том, что viewDidLoad
еще не был вызван, поэтому вы еще не создали изменяемый массив.
Также возможно, что у вас есть массив (т. Е. Представление было загружено) во время проверки массива, но у вас еще не было массива (представление еще не было загружено) во время попытки добавления в массив, поэтому ваше сообщение addObject:
не было услышано.
Рассмотрите возможность создания массива ранее.Вам, вероятно, следует создать его в init
или initWithCoder:
.
Третья возможность состоит в том, что вы исследовали массив еще до того, как добавили в него.Убедитесь, что вы входите или выходите из системы в обеих точках, чтобы вы знали, какая из них произошла первой.
Независимо от проблемы, вам также необходимо либо присвоить массив переменной экземпляра, а не свойству, либо выполнить автоматический выпуск массива.перед назначением его на собственность.В противном случае, вы чрезмерно сохраняете массив, а это значит, что вы, возможно, потеряете его позже.Вам, вероятно, необходимо просмотреть Руководство по программированию управления памятью для какао .