支持AppleScript用于非实际对象的实体

时间:2013-08-05 20:36:56

标签: objective-c macos applescript

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

  

有时,应用程序的对象模型提供脚本访问权限   粒度级别的对象是不切实际的   实现单个对象。例如,AppleScript脚本   可以要求文本文件的字符,但它会是相当的   应用程序将每个字符表示为对象的代价很​​高。   NSTextStorage类使用特殊访问器处理此案例   方法,characters

我不明白我是如何在一个非常相似的情况下实现同样的事情的。 “特殊存取方法”是什么意思?

1 个答案:

答案 0 :(得分:1)

访问方法本身并不像它的返回值那么特殊。最终,应用程序中的任何可编写脚本的“对象”都必须由Objective-C对象支持 - KVC必须有一些东西可以使用 - 但它可以是仅在脚本需要时创建的对象。例如,可以通过使characters返回实现-objectAtIndex:的NSArray子类来按需制作“字符”对象来处理文本的“字符”。或者,您可以实现countOfCharactersobjectInCharactersAtIndex:,类似地返回按需“字符”对象。 (参见“维护KVC合规性”下的“可可脚本指南”。)