独自のコンテキストでコアデータの変更を作成するモーダルビューコントローラーがあり、[完了]をクリックすると、変更が保存され(マージ変更通知がディスパッチされます)、デリゲートに通知して却下されます。
私の問題は、メインコンテキストが編集コンテキストの変更とマージされた後、デリゲートがメッセージを受信する必要があることです。次の実行ループでデリゲート呼び出しを実行したいのですが、オブジェクトの有効期間に問題があります。私は次のことを考えました:
- 電話をかけてください
[delegate performSelector:withObject:afterDelay:]
。ただし、そのメッセージは認識されていないようです。私のデリゲートはNSObject
プロトコルに準拠していますが、遅延のある実行セレクターは含まれていません。 - ビューコントローラでメソッドを作成します
informDelegateWithObject:
。デリゲートメソッドを呼び出し、遅延後にそのメソッドを呼び出します。つまり[self performSelector:@selector(informDelegateWithObject:) withObject:.. afterDelay:..]
。これは機能する可能性がありますが、ビューコントローラが閉じられているため、遅延が数秒の場合、メモリから解放され、呼び出し時にクラッシュが発生することはありませんか? - のインスタンスを作成します
NSInvocation
。私はこれについて考えました、しかし、このオブジェクトの寿命は何ですか?を使用して作成した場合[NSInvocation invocationWithMethodSignature:]
、NSInvocation
オブジェクトは自動解放されず、次の実行ループに使用されませんか?数秒は言うまでもありません。また、モーダルビューコントローラが閉じられて解放されているため、呼び出しオブジェクトをビューコントローラに保存できません。
助言がありますか?