プロジェクトを ARC に変換していたところNSOperation
、バックグラウンドで画像をダウンロードするサブクラスに到達したときに、コードがクラッシュし始めました。
だから私は私のNSOperation
サブクラスとそのメインコードを持っています:
- (void)main
{
Post *p = [[Post alloc] initWithNewManagedObjectContext];
Post *post = (Post *)[p findById:postId];
[post downloadAndProcessImageOfTypeThumbOrAll:thumbOrAll];
if (![self isCancelled]) {
[target performSelectorOnMainThread:afterCompletionAction withObject:postId waitUntilDone:NO];
}
}
このコードは、ARCなしで (適切なリリースで) コンパイルすると機能しますが、ARC に変換すると、メイン メソッドの終了直後にEXC_BAD_ACCESS例外を受け取りました。
これは、ARC がオブジェクトをリリースする前に、おそらく Posts オブジェクトをリリースすることに関連していると思います。しかし、それらをより長く保持する方法がわかりません。
また、[[Post alloc] initWithNewManagedObjectContext];
既存のコンテキストを作成または再利用して、CoreData からオブジェクトにアクセスします。
ヒントはありますか?