gpt4 book ai didi

cocoa - 编写 Cocoa 应用程序属性脚本

转载 作者:行者123 更新时间:2023-12-03 16:21:37 26 4
gpt4 key购买 nike

我的 sdef 字典中有一个名为 busy 的应用程序属性

<property name="busy" code="mybs" type="boolean" access="r" description="Is application busy?">
<cocoa key="isBusy"/>
</property>

此外,我还有带有 isBusy 访问器的 NSApplication 类别

- (BOOL)isBusy
{
return NO;
}

脚本

tell application "MyApplication"
properties
end tell

tell application "MyApplication"
busy
end tell

工作正常,busy 属性为 false,但脚本

busy of application "MyApplication"

返回错误

error "MyApplication got an error: Can’t make |busy| into type specifier." number -1700 from |busy| to specifier

我的错误在哪里?

最佳答案

由于 busy 是特定于您的应用程序的术语,因此必须在其前面添加 tellusing terms from 以使该术语在代码中的那一点。其中任何一个都可以:

tell application "MyApplication" to busy

tell application "MyApplication"
busy
end tell

using terms from application "MyApplication"
busy of application "MyApplication"
end using terms from

AppleScript 从左到右解析,并且必须先知道有效术语是什么,然后才能解析它们。它不会跳到应用程序“MyApplication”的忙碌末尾来弄清楚如何解析表达式的开头。如果 MyApplication 有一个术语 busy of ,它将完全改变该表达式的含义并导致悖论:of 将不再是用于构造对象说明符的关键字,这意味着它不会从 MyApplication 获取术语,这意味着它of 关键字,并且它会从应用程序获取术语……无穷无尽.

您可能想知道为什么某些应用程序属性(例如 nameversionrunning 可以在不引入应用程序术语的情况下工作。它们之所以有效,是因为它们是由全局系统术语定义的,而不是特定于您的应用程序的。

请注意, 所有格运算符不会引入像 tell 那样的术语,因此这也不起作用(除非您在其前面加上 tellusing terms from):

application "MyApplication"'s busy

关于cocoa - 编写 Cocoa 应用程序属性脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239907/

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