gpt4 book ai didi

macos - 如何查看 AppleScript “whose” 子句的内部以优化脚本对象说明符的解析?

转载 作者:行者123 更新时间:2023-12-03 17:18:32 25 4
gpt4 key购买 nike

-[NSObject scriptingValueForSpecifier:] 的文档说:

You can override this method to customize the evaluation of object specifiers…

我想这样做是为了让我的应用程序中的 AppleScript 查找更加高效。在某些类型的测试中,我可以进行哈希查找,而不是让 AppleScript 询问每个对象,然后一一查询它们的属性。问题是,如果我收到一个 NSWhoseSpecifier,我可以得到它的 test,这是一个 NSSpecifierTest,但似乎没有一种查看 NSSpecifierTest 内部以找出正在测试的属性的方法。除了初始化器和 -isTrue 方法之外的所有内容都是私有(private)的。

最佳答案

我们来区分一下。如果您只想自定义 who 子句返回的值(在微调结果的意义上),那么您可以覆盖 scriptingValueForSpecifier对于有问题的对象。例如,假设您有一个名为“box”的对象,该对象具有名为“color”的属性,并且您需要类似 every box whose color is blue 的语句。还返回颜色为“aqua”、“teal”或“navy”(均为蓝色阴影)的框,那么您将覆盖 scriptingValueForSpecifier来实现它。

但是,如果您的目标是制定更有效的测试形式,您可能必须实现 NSScriptingComparisonMethods 中的适当方法。协议(protocol)。这些是 AppleScript 用于通过 NSSpecifierTest 评估脚本对象比较的例程。 (这就是 NSWhoseSpecifier )所依赖的)。同样,您可以在对象上重写这些方法,以提供不同的评估方法。

作为最后的手段,您可以尝试子类化 NSWhoseSpecifierNSSpecifierTest ,但要明白这些是不透明的类,Apple 不鼓励对其进行子类化。我不完全确定如何您将实现这些子类;您可能必须使用 NSScriptSuiteRegistry 注册您的子类命令。

关于macos - 如何查看 AppleScript “whose” 子句的内部以优化脚本对象说明符的解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com