0
私はコアデータを使用しています。要求の結果をループし、ループ内にいくつかのカスタムオブジェクトを作成し、それらをNSMUtableArrayに保存する必要があります。 UIコンポーネント。これは私がやっていることです:NSFetchRequestからNSStringを取得する問題
NSMutableArray *persons = [[NSMutableArray alloc] init];
NSError *error = nil;
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Person" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
ToggleButtonInfo *btn = [[ToggleButtonInfo alloc] init];
NSString *personName = [NSString stringWithFormat:@"ww %@", [info valueForKey:@"name"]];
NSLog(@"pn: %@", personName);
[btn setButtonInfo:personName];
[persons addObject:btn];
}
[fetchRequest release];
return persons;
ループは正常に動作しています、情報はそこにあります。私はこのような何かを行う場合
[info valueForKey:@"name"]
は:
[btn setButtonInfo:@"something else here"];
すべてが正常に動作し、問題は、私が使用している場合、私は私のコンポーネントで「EXC_BAD_ACCESS」を得ることです。だから、の情報が割り振り解除されており、それがエラーを引き起こしているようですね。 stringWithFormatを使用してスクリプティングを作成しようとしましたが、同じエラーが発生します。
アイデア?
はい、後でボタンを表示するとエラーが発生します。質問:漏れはなぜですか?それはNSMutableArrayによって所有されていませんか? NSMutable配列が割り当て解除されたときに解放されませんか? – oscarm
あなたは+ allocを呼び出したときからそれを保持しています。 NSMutableArrayには、-addObject:を呼び出した時点からの保持があります。配列の割り当てを解除すると、配列はオブジェクトを解放しますが、あなたの+ allocの保持はそのまま残り、リークします。 –
また、実際にクラッシュする場所からスタックトレースとコードを使用して質問を更新する必要があります。 –