NSMutableArray свойство становится автоматически выпущенным? - PullRequest
1 голос
/ 08 октября 2011

У меня есть свойство NSMutableArray, определенное в моей модели мозга.

@property (retain, nonatomic) NSMutableArray *stockColors;

Изменяемый массив заполняется объектами во время инициализации мозга.

В моем представлении контроллера viewDidLoad я делаю

*Brain brain = [[Brain alloc]init];
NSLog(@"Brain stockColors is %@", brain.stockColors);

Это работает хорошо, и эторегистрирует адрес памяти, как и ожидалось.

Затем в том же контроллере представления у меня есть действие «addButtonPressed», объявленное связанным с UIButton в .xib.

В моем действии addbuttonPressed, если я пытаюсь исделать точно такой же журнал

NSLog(@"Brain stockColors is %@", brain.stockColors);

Программа вылетает!

Если я сделаю

NSLog(@"Brain stockColors is %@", brain);

Я получу адрес для мозга ... так что мозг существует... но по какой-то причине кажется, что brain.stockColors освобождается или что-то еще, когда я добираюсь до действия addButtonPressed.

Может кто-нибудь объяснить, что может вызвать его автоматическое освобождение?

Спасибо

1 Ответ

2 голосов
/ 08 октября 2011

Учитывая, что вы пропустили важный код ... фактический Brain вызов init, я хочу сказать, что при создании изменяемого массива вы присваиваете переменной экземпляра, а не свойству.

//The Brain init method should contain something similar to this
self.stockColor = [NSMutableArray array];

//stockColor = [NSMutableArray array]; would be incorrect and get autoreleased
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...