当我尝试将对象添加到数组中时,我遇到了崩溃问题,我想我有创建对象并释放它的方式的问题。但我不太确定,因为我对内存管理还是比较软弱将字典添加到数组时,程序崩溃了吗?
NSMutableDictionary *schools = [[NSMutableDictionary alloc] init];
[schools setObject:name forKey:kFavoriteSchoolName];
//load data is getting data from NSUserDefault which I save
NSMutableArray *loadedArray = [self loadData];
//if loadedarray has object in there, then continue adding schools to it or make new array
if([loadedArray count] > 0)
{
[loadedArray addObject:schools];
> // it crashes here
[schools release];
return loadedArray;
} else
{
//It will add the school to the array for the first time if there is nothing when it loaded.
NSMutableArray *tempArray = [[[NSMutableArray alloc] init] autorelease];
[tempArray addObject:schools];
[schools release];
return tempArray;
}
这个功能帮助把学校加入收藏夹列表。我不能添加一次,但当我再次添加它时崩溃。
这是我loadData函数的代码
- (NSMutableArray *) loadData
{
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSMutableArray *list = [userDefault objectForKey:kSchoolList];
return list;
}
日志并没有说什么,但这样的:线程1:程序接收到的信号“SGABRT”
当我第一次运行该程序,并添加,它是好的,我再加上学校,然后只有它崩溃,崩溃在[loadedArray addobject:学校];
你能张贴崩溃日志? – Madhu 2012-03-15 05:02:55
NSMutableArray * loadedArray = [self loadData]; 确保'[self loadData]'返回的数组也是可变的...其他明智的做法是再次尝试'NSMutableArray * loadedArray = [[self loadData] mutable copy]; ' – Shubhank 2012-03-15 05:04:30
试试这个NSMutableArray * loadedArray = [[NSMutableArray alloc] initWithArray:[self loadData]]; – 2012-03-15 05:19:07