我正在尝试在OS X应用程序中实现AppleScript支持。在Cocoa Scripting文档中,他们一直提到可以使应用程序中没有真实实例表示的可编写脚本的AppleScript实体,例如一个文本编辑应用程序,允许通过AppleScript访问“单词”和“字符”,但实际上没有Word或Character类(只是一个字符串来存储文本)。
有时,应用程序的对象模型提供脚本访问权限 粒度级别的对象是不切实际的 实现单个对象。例如,AppleScript脚本 可以要求文本文件的字符,但它会是相当的 应用程序将每个字符表示为对象的代价很高。
NSTextStorage
类使用特殊访问器处理此案例 方法,characters
。
我不明白我是如何在一个非常相似的情况下实现同样的事情的。 “特殊存取方法”是什么意思?
答案 0 :(得分:1)
访问方法本身并不像它的返回值那么特殊。最终,应用程序中的任何可编写脚本的“对象”都必须由Objective-C对象支持 - KVC必须有一些东西可以使用 - 但它可以是仅在脚本需要时创建的对象。例如,可以通过使characters
返回实现-objectAtIndex:
的NSArray子类来按需制作“字符”对象来处理文本的“字符”。或者,您可以实现countOfCharacters
和objectInCharactersAtIndex:
,类似地返回按需“字符”对象。 (参见“维护KVC合规性”下的“可可脚本指南”。)