2

現在、ドキュメントベースのアプリケーションではないアプリケーションがあります(その価値よりも厄介だと思ったため)。しかし、今はそれだけの価値があるのではないかと思っていましたが、まだ解決していない問題が1つあります。NSDocument複数のウィンドウ間でサブクラスを共有します。

では、のサブクラスをNSDocument1つNSWindowControllerに関連付ける必要がありますか、それとも複数のウィンドウ間でこれらを共有できますか?私が尋ねる理由は、アプリケーションファイルが100MiB(またはそれ以上)になる可能性があり、ユーザーが同じファイルを複数のウィンドウで開く可能性もあるためです。また、これらのファイルの処理には比較的長い時間がかかるため、複数のウィンドウが同じファイルにアクセスできるようにするNSDocumentと便利です。また、ファイルは大量のデータで非常に迅速に更新されるため、同じドキュメントの複数のインスタンスを同期すると、多くのCPU時間が使用されます。

誰かがこれを行ったことがありますか、それともドキュメントベースのアプリケーションで行うことができますか?このトピックに関するアドバイスは大歓迎です。

4

4 に答える 4

2

NSDocumentクラスリファレンス- (void)addWindowController:(NSWindowController *)aControllerにあるメソッドを使用して、それを実行できるはずです。どのデータをどこに送信するかを知らせるロジックはたくさんありますが、これにより、少なくとも同じドキュメントにリンクされている複数のウィンドウコントローラーを制御できるようになります。

于 2011-05-28T23:44:01.447 に答える
1

これまでのところ、これは私が見つけた最良の答えであり、質問に直接答えることはありませんが、私が直面している同じ障害の多くを扱っています。うまくいけば、他の誰かが私にとってより良い、より詳細で直接的な答えを持っています。

http://www.cocoadev.com/index.pl?DocumentBasedAppWithOneWindowForAllDocuments

于 2011-05-30T04:59:51.940 に答える
0

ドキュメントアーキテクチャは、複数のモデルを管理するのに役立ちます。ユーザーが複数のモデルを同時に開いて、それらを切り替えることができるようにしたい場合は、それが役立つ可能性があります。

それはあなたが何かをするのを妨げることはありません、それ以外の場合は簡単なことを難しくしません。WindowsとGUIの処理はまだあなた次第であり、これをどのように構成するかわからない場合は、ドキュメントを使用するかどうかに関係なく、違いはありません。

ウィンドウの内容が時間の経過とともに変化してさまざまなドキュメントを表す可能性がある場合、多くのドキュメントが開いているとどうなりますか?これは解決するのが難しい問題である可能性があり、技術的な観点からは実際には意味がありません(ウィンドウのコンテンツの変更はwindow.contentView = newViewと同じくらい簡単ですよね?)。

ドキュメントアーキテクチャとは何か、そしてそれがあなたのために何ができるかについて、あなたは多くの誤解を持っているようです。

于 2011-05-29T23:21:33.617 に答える
0

デフォルトでは、各ドキュメントに1つの専用Windowsコントローラーがあります。ただし、オーバーライドできます

- (void)makeWindowControllers

Slevが述べたように、独自のWindowsコントローラを作成し、それらをドキュメントに追加します。

于 2012-10-31T08:14:14.690 に答える