我的对象有一个私人的NSMutableArray项目。我使用下面的代码的大小顺序在项目的对象进行排序:排序NSMutableArray内存泄漏
-(void)sortItems{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"size" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [items sortedArrayUsingDescriptors:sortDescriptors];
NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray: sortedArray];
[self setItems:newArray];
[sortDescriptor release];
}
显然,这是这里的内存泄漏,因为每次我打电话sortItems时间,我allocing新的内存和分配项目指向它。我试着释放旧的内存如下:
NSMutableArray* newArray = [[NSMutableArray alloc] initWithArray: sortedArray];
NSMutableArray* oldArray = [self items];
[self setItems:newArray];
[oldArray release];
但是,这给出了一个EXC_BAD_ACCESS错误。我已经阅读了objC中的内存处理,并且我确信我在这里做了一些根本性错误。
任何帮助将不胜感激!
显示你的'setItems'方法的实现/声明。 *应该*保留'newArray',这意味着你需要在调用它之后立即调用[newArray release]。 – trojanfoe 2012-02-21 14:45:19
目前项目属性: @property(nonatomic,assign)NSMutableArray * items;我想我需要阅读何时在属性标志中使用“保留”! – JimmyB 2012-02-21 15:02:47