0

我正在尝试在 OS X 应用程序中实现 AppleScript 支持。在 Cocoa Scripting 文档中,他们一直提到,可以在应用程序中拥有不由真实实例表示的可编写脚本的 AppleScript 实体,例如文本编辑应用程序,它允许通过 AppleScript 访问“单词”和“字符”,但实际上并没有有一个 Word 或 Character 类(只是一个用于存储文本的字符串)。

有时,应用程序的对象模型以某种粒度级别提供对对象的脚本访问,这对于单个对象来说是不切实际的。例如,AppleScript 脚本可以请求文本文档的字符,但应用程序将每个字符表示为对象会非常昂贵。该类NSTextStorage使用特殊的访问器方法来处理这种情况,characters.

我不明白如何在非常相似的情况下实现相同的目标。“特殊的访问方法”是什么意思?

4

1 回答 1

1

与其返回值相比,访问器方法本身的特殊之处并不在于它。最终,应用程序中的任何可编写脚本的“对象”都必须由 Objective-C 对象支持——KVC 必须有一些东西可以使用——但它可以是仅在脚本需要时才创建的对象。例如,文本的“字符”可以通过characters返回一个 NSArray 子类来处理,该子类实现-objectAtIndex:按需生成“字符”对象。或者,您可以实现countOfCharactersand objectInCharactersAtIndex:,类似地返回按需“字符”对象。(请参阅“维护 KVC 合规性”下的 Cocoa 脚本指南。)

于 2013-08-05T23:55:56.707 回答