基本的に NSManagedObject をセグエに渡して次のビューをロードする Button があるのは適切ですか?次のビューでは、親 NSManaged オブジェクトの子オブジェクトをロードします。そのコントローラーを破棄すると、NSManagedObject は元のボタンと子によって引き続き保持されます。NSManaged オブジェクトのそのプロパティを上書きするため、次に同じデータをロードしたときに解放されると思います。しかし、これらすべての子オブジェクトを保持するのは悪いことですか、それとも正常ですか?
ある時点でプロパティを nil に設定して、これらの子を手動で解放する必要がありますか?
私が見ているものにもう少し文脈を与えましょう。
【ブランドページ】の内容
- (NSArray *) pages {
NSLog(@"%@", [self edetail]);
if ([self edetail] != nil) {
NSArray *pgs = [[[self edetail] pages] allObjects];
return [pgs sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"sort_order" ascending:YES]]];
}
return [NSArray array];
}
コアデータから取り出して並べ替えた NSSet である objectA の NSArray があるとします。次に、Array 内の各 objectA を繰り返し処理し、objectA に設定されたプロパティを持つカスタム ボタン クラスを作成します。ボタンがクリックされると、UINavigationController にメッセージを送信して、その ObjectA を使用して ObjectA の特定の子配列/セットをプルし、データをカスタム グリッドに表示するページにセグエします。
ObjectA を渡した UIViewController をポップすると、楽器によると、ObjectA はまだそれらの子オブジェクトを保持しており、ObjectA はまだボタンによって保持されています。これは本当に悪い設計ですか?私の RootViewController がそれらのオブジェクトの NSArray を保持し、インデックスでそれらを呼び出していた場合よりも悪くはないようです。
アプリを使っているうちに、コアデータのすべてのデータを実際に参照してしまうような気がしますが、必要がなくなったにもかかわらず、これらの子が解放されないことが心配です。