0

何が悪いのか理解に苦しむ。NSWindow と NSTextView を持つ NSWindowController があります。その NSWindowControllerとNSWindow (およびそのすべてのコントロール) をファイルにアーカイブしたいと考えています。

次に、同じ NSWindowController と NSWindow とすべてのビューをファイルから解凍したいと思います。しかし、Apple のドキュメントには次のように書かれています。

Note: Although the NSWindow class inherits the NSCoding protocol from NSResponder, the class does not support coding. Legacy support for archivers exists but its use is deprecated and may not work. Any attempt to archive or unarchive an NSWindow object using a keyed coding object raises an NSInvalidArgumentException exception.

重要なのは、encodeWithObject:windowController の場合、これは NSWindow を格納しません。したがって、windowController に対して decodeWithObject を実行すると、NSWindow が読み込まれません。

NSWindowController / NSWindow とそのすべてのコントロールをアーカイブ/アーカイブ解除するにはどうすればよいですか? 私は何が欠けていますか?

4

1 に答える 1

1

あなたの答えに基づいて、これは絶対間違った方法です。アーカイブされたコントローラー/ビュー オブジェクト グラフが意味を持つ唯一の場所は、それが nib/xib としてアーカイブされている場合です。ドキュメントには、アプリケーションの機構の一部ではなく、データが含まれています。

Lion より下のものをターゲットにしている場合は、ドキュメントを保存するときにドキュメント データのどこかに状態を保存し、ドキュメントを読み込むときに復元します (どこでいつ行うべきかについては、さまざまな読み込み段階のドキュメントベース アプリケーションの概要を参照してください)。これ)。

Lion 以降をターゲットにしている場合、ドキュメントはまだあまり詳細ではありません (場合によっては完全に存在しないこともあります) が、Lion はこれを正確にサポートし、ユーザーの労力はほとんどありません。WWDC 2011 ビデオ、セッション 119 - 再開と自動終了を参照してください。

于 2011-08-08T17:14:19.073 に答える