當我嘗試將對象添加到數組中時,我遇到了崩潰問題,我想我有創建對象並釋放它的方式的問題。但我不太確定,因爲我對內存管理還是比較軟弱將字典添加到數組時,程序崩潰了嗎?
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