0

OS X アプリで AppleScript サポートを実装しようとしています。Cocoa Scripting のドキュメントでは、AppleScript を介して「単語」や「文字」にアクセスできるテキスト編集アプリなど、アプリ内の実際のインスタンスで表されないスクリプト可能な AppleScript エンティティを持つことが可能であると言及し続けていますが、実際にはそうではありませんWord または Character クラス (テキストを格納する文字列のみ) を持っている。

アプリケーションのオブジェクト モデルは、個々のオブジェクトで実装するのが現実的でない粒度レベルで、オブジェクトへのスクリプト アクセスを提供する場合があります。たとえば、AppleScript スクリプトはテキスト ドキュメントの文字を要求できますが、アプリケーションが各文字をオブジェクトとして表現するには非常にコストがかかります。このNSTextStorageクラスは、特別なアクセサ メソッド でこのケースを処理しますcharacters

非常によく似たケースで同じことを達成する方法がわかりません。「特別なアクセサメソッド」とはどういう意味ですか?

4

1 に答える 1

1

戻り値ほど特別なのは、アクセサー メソッド自体ではありません。最終的に、アプリケーション内のスクリプト可能な「オブジェクト」はすべて、Objective-C オブジェクトによって支えられている必要があります (KVC は何かを処理する必要があります)。たとえば、テキストの「文字」は、必要に応じて「文字」オブジェクトを作成するためcharactersに実装する NSArray サブクラスを返すことで処理できます。-objectAtIndex:または、 と を実装countOfCharactersしてobjectInCharactersAtIndex:、同様にオンデマンドの「キャラクター」オブジェクトを返すこともできます。(Cocoa Scripting Guide の「Maintain KVC Compliance」を参照してください。)

于 2013-08-05T23:55:56.707 に答える