Вот код, который генерирует исключение из-за некоторых управления памятью я делаю:Добавление autoreleased объекта NSMutableArray
Мой Заголовочный файл:
@property(nonatomic, retain) NSMutableArray *holderArray;
Мой файл реализации:
@synthesize holderArray
-(void) viewDidLoad{
holderArray = [[NSMutableArray alloc] init];
[self addSampleObject];
}
-(void) addSampleObject{
[holderArray addObject:[self createSampleObject]];
}
-(ModelObject *) createSampleObject{
ModelObject *mObj = [[ModelObject alloc] init];
// Set a few properties
return [mObj autorelease];
}
Что должно происходить в этом контексте? createSampleObject
автореализует объект в какой-то момент, а [holderArray addObject]
увеличивает счетчик ссылок для этого объекта на 1. Из того, что я понимаю, все должно быть хорошо.
Но когда геттер обращается к этому элементу, я получаю следующее исключение. Она исчезает, если я удалю autorelease STMT при создании модели объекта -
#0 0x012525a8 in objc_exception_throw()
#1 0x010f36e5 in -[__NSArrayM objectAtIndex:]()
я упускаю нечто фундаментальное о том, как autorelease работает?
Thanks,
Teja.
EDIT: На самом деле вы правы, есть совершенно несвязанная часть моего кода, которая бросала эту ошибку. Я думал, что единственное, что я изменил с рабочего, - это добавить заявление autorelease
.
Спасибо!