0

更新:質問を整理し、少し明確にしました

EXC_BAD_ACCESSクラッシュしNSManagedObjectます。

次のようにモーダルビュー()Sentenceに渡す管理対象オブジェクトがあります。addStoryItem

addStoryItem.sentence = (Sentence*)[fetchedResultsController objectAtIndexPath:indexPath];

AddStoryItem保持するように設定されていますSentence

@property (retain) Sentence *sentence;

時々、ユーザーは別のモーダル(上に)を表示する何かをする必要がありますaddStoryItem-これはこのオブジェクトには影響しませんが、NSMutableSetのコピーを取ります-sentence.audiosets

EXC_BAD_ACCESSユーザーがaddStoryItemに戻ると、センテンスオブジェクトまたはそのプロパティにアクセスまたは設定しようとすると、このモーダルが表示されます。

  • 現在の管理対象オブジェクトコンテキストとフェッチされた結果コントローラーがあります
  • モーダルビューコントローラー(afaik、文オブジェクトとは何の関係もありません)を示さない限り、すべてが正常に機能します。
  • ゾンビはオンになっていますが、何も教えてくれません(BRAINS?)

何が起こっているのかを簡単にまとめると、次のようになります。

  • ユーザーがテーブルビューで行を選択
  • テーブルからオブジェクトを取得し、モーダルの文のプロパティを設定してから、fetchedResultsControllerを使用してモーダルを表示します
  • 文字列と画像を表示し、文からモーダルのUIアスペクトにnssetを設定します
  • ユーザーがnssetを変更する必要がある場合は、最初のnssetのコピー(文オブジェクトを変更したりアクセスしたりしない)を使用して、別のモーダルを表示します。
  • 2番目のモーダル(またはNSLOGセンテンス)を閉じた後、センテンスにプロパティを設定しようとすると- EXC_BAD_ACCESS

私に関する限り、私は文を所有しています。addStoryItemの他のプロパティはまだメモリ内に残っていますが、アクセスしようとすると文が表示されません。はい、addStoryItemのdeallocで文をリリースしますが、呼び出されていません(ログステートメントがあります)。

手伝ってくれますか?より多くのコードまたは情報を提供させていただきます。かなりイライラ!

4

1 に答える 1

1

で新しいものを作成していsentenceToUpDateますdidSelectRowAtIndexPath:。確かに、この参照は、その方法を終了するとすぐに忘れられます。

むしろ、次のように、取得したオブジェクトを保持されているプロパティに割り当てる必要があります。

self.sentence = [fetchedResultsController objectAtIndexPath:indexPath];

これで、インスタンスは期待どおりに保持されます。

もう1つの考えられる原因は、のコピーですNSSet。新しいNSSetものを作成して、エンティティに影響を与えていないことを確認してください。

NSSet *setToBePassedToModal = [[NSSet alloc] 
                                initWithSet:entity.toManyRelationship];
于 2012-08-27T20:36:30.153 に答える