在我的应用程序的某些时候,我需要从文件中加载一个列表,所以我实现了这个方法来加载列表:
-(void)loadList
{
NSString *filePath = [self dataFilePath]; //This is a method return the path of file
if([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSMutableArray *tempArray = [[NSMutableArray alloc]initWithContentsOfFile:filePath];
self.list = [[NSMutableArray alloc]initWithArray:tempArray];
[tempArray release];
}
}
self.list是一个(保留)属性。
我认为在初始化selfl.list时泄漏来自[alloc]。我用了
self.list = [[[NSMutableArray alloc]initWithArray:tempArray]autorelease];
但应用程序因EXC_BAD_ACCESS而崩溃。所以我在这里很困惑如何解决这个问题。
感谢您的任何建议。
答案 0 :(得分:3)
只需分配,
self.list = tempArray;
由于 tempArray 已经是一个数组,因此您不必从中创建另一个数组。您可以直接分配给 self.list 。
答案 1 :(得分:1)
There is no need to allocate another time for array .So just assign directly
-(void)loadList
{
NSString *filePath = [self dataFilePath]; //This is a method return the path of file
if([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSMutableArray *tempArray = [[NSMutableArray alloc]initWithContentsOfFile:filePath];
self.list = [tempArray copy];
[tempArray release];
}
}
答案 2 :(得分:0)
是您的列表属性分配还是保留? 如果保留,那么你应该改变这个:
self.list = [[NSMutableArray alloc]initWithArray:tempArray];
到此:
self.list = [[NSMutableArray arrayWithArray:tempArray];
答案 3 :(得分:0)
不要自动释放。 (我猜)。