3

サブビューからアクセスする必要があるNSNotificationCenterやNSUndoManagerなどのクラスがドキュメントにあります。

今、私は次のようなことをすることでそれらにアクセスできます:

NSUndoManager *undoManager = [[[[[self view] window] windowController] document] undoManager];

私が知らないより良いアプローチはありますか?ありがとう。

4

1 に答える 1

3

ビューがUNDOマネージャーについて心配する必要があるのはなぜですか?いくつかのリファクタリングがそこにあるかもしれないようです。

通常、ビューはファーストレスポンダーで何らかのアクションをトリガーする可能性があります。次に、そのアクションは、そのアクションに応答するウィンドウコントローラーやドキュメントなどのオブジェクトが見つかるまでレスポンダーチェーンに渡されます。'undo'イベントは通常、データモデルに影響を与えるため、ドキュメントはそのようなものを処理します。ユーザーが前の操作を元に戻すと、モデルは前の状態に戻り、ビュー階層に変更が反映されます。

あなたの場合、UNDOマネージャーを扱う責任をドキュメントに移すことは可能ですか?

同じことが通知センターにも当てはまります。ドキュメントに通知センターがある場合、ビューがそれを使用しようとしているのはなぜですか?上記のレスポンダーチェーンを活用して、ドキュメントへのメッセージを取得できますか?+defaultNotificationCenterそれがより適切であるならばあなたが得ることができるデフォルトの通知センターもあります。

于 2011-11-03T21:53:21.640 に答える