下面是一些抛出,因为一些内存管理我正在做的异常代码:添加一个自动释放对象的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
autoreleases在某个时间点的对象,而[holderArray addObject]
递增该对象的引用计数1.从我的理解,它应该都是好的。
但是当一个getter访问那个元素时,我得到以下异常。
#0 0x012525a8 in objc_exception_throw()
#1 0x010f36e5 in -[__NSArrayM objectAtIndex:]()
我失去了一些关于如何自动释放的作品根本 - 创建模型对象时,它就会消失,如果我删除自动释放语句?
谢谢,
Teja。
编辑:其实你是对的,有一个完全不相关的我的代码片抛出这个错误。我认为我从工作中改变的唯一的事情是增加autorelease
声明。
谢谢!