配列にオブジェクトを追加しようとするとクラッシュする問題があります。オブジェクトを作成してリリースする方法に問題があると思います。しかし、私はまだメモリ管理に少し弱いので、私はまだよく分からない。辞書を辞書に追加すると、プログラムがクラッシュしますか?
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:schools]でクラッシュします。
にデータを移入? – Madhu
NSMutableArray * loadedArray = [self loadData]; '[self loadData]'によって返される配列も変更可能であることを確認してください...もう一度これを行い、 'NSMutableArray * loadedArray = [[self loadData] mutable copy]; ' – Shubhank
このNSMutableArrayを試してください* loadedArray = [[NSMutableArray alloc] initWithArray:[self loadData]]; –