【发布时间】:2011-07-01 01:43:47
【问题描述】:
在我的一个保留属性的 getter 中,我为我的模型对象(“模型”)分配并分配了一个 NSArray。然后我使用“sortedArrayUsingSelector:”方法对该 NSArray 进行排序。根据文档,这会返回一个自动释放的 NSArray。然后我将其重新分配给我的“模型”数组。
起初,我从来没有保留这个自动释放的排序数组,并发现当我从堆栈中弹出这个 viewController 时,我的应用程序会崩溃,说我试图减少一个已释放对象的引用计数或类似的东西。然后我添加了一个保留,如下面的代码所示,一切正常。
我的问题是,即使我在声明中保留此属性并在我的 dealloc 中释放它,我也应该保留 autoreleased 对象是否正确?
- (NSArray *)models {
if (!models) {
models = [[NSArray alloc] initWithArray:[self.modelDictionary allKeys]];
models = [[models sortedArrayUsingSelector:@selector(compare:)] retain];
}
return models;
}
【问题讨论】:
标签: iphone objective-c properties retain autorelease