NSMutableArray инициализация поведения - PullRequest
0 голосов
/ 20 мая 2011

Когда я инициализирую

self.nsmutableArray = [NSMutableArray array];

в моем методе viewDidLoad, NSMutableArray правильно инициализируется, и я могу добавить в него addObject.Но если я пропущу описанную выше инициализацию в методе viewDidLoad и инициализирую ее в некоторых других методах, NSMutableArray инициализируется неправильно, и я не могу добавить в него addObject.Почему это поведение?Это нужно всегда инициализировать в viewDidLoad?

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Я думаю, что это почти повторяющийся вопрос.Ваша проблема не имеет ничего общего с инициализацией NSMutableArray, а больше связана с тем, как вы ведете управление памятью в Objective-C для подклассов NSObject в целом.

См. Связанный пост на NSString s здесь .Посмотрите на верхний ответ.

Если вы хотите, чтобы массив длился в течение всего времени жизни класса, попробуйте:self.nsmutablearray = [[NSMutableArray alloc] init];Просто убедитесь, что вы выпустили его в методе dealloc:[self.nsmutablearray release];

В качестве альтернативы вы можете @synthesize nsmutablearray, но вам все равно придется обрабатывать его освобождение.Существует множество способов решения этой проблемы.

0 голосов
/ 20 мая 2011

Вам не нужно инициализировать NSMutableArray в вашем сообщении viewDidLoad. Фактически, ваш NSMutableArray не знает контекста, в котором он инициализируется.

Я бы изучил особенности проблем, которые возникают у вас, когда вы пытаетесь впоследствии добавить объекты в массив.

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