Если я правильно вас понимаю, ваш класс объявляет переменную экземпляра следующим образом:
NSMutableArray *myBurgers;
Затем вы переопределяете viewDidLoad
следующим образом:
- (void)viewDidLoad
{
// ...
NSMutableArray *myBurgers = [NSMutableArray arrayWithCapacity:0];
// ...
}
Если этоВ этом случае ваш viewDidLoad
метод объявляет локальную переменную myBurgers
, которая временно маскирует переменную экземпляра с тем же именем.Затем вы присваиваете автоматически освобожденный массив локальной переменной.Массив освобождается вскоре после возврата из viewDidLoad
, но в любом случае он никогда не присваивается переменной экземпляра.
Чтобы исправить это, переписайте свой метод viewDidLoad
следующим образом:
- (void)viewDidLoad
{
// ...
myBurgers = [[NSMutableArray alloc] init];
// ...
}
Нет смысла автоматически высвобождать объекты, которые вы назначаете переменным экземпляра;вместо этого используйте alloc
и соответствующий метод init...
.Кроме того, как отмечал предыдущий автор, инициализация изменяемого массива с нулевой емкостью довольно бессмысленна.Либо используйте конкретную ненулевую емкость (если вы заранее знаете, сколько элементов будет содержать массив), либо используйте значение по умолчанию.