我正在编写一个标准的 Cocoa 应用程序,并且我刚刚开始为它实现 AppleScript 支持。我已经testprop
为我的顶级应用程序脚本类定义并实现了一个属性,并且访问它工作得很好:如果我启动我的应用程序的一个实例并在脚本编辑器中运行以下 AppleScript,我会得到我期望的输出:
tell application "MyApp"
testprop
end tell
但是,如果我在我的应用程序未运行时在脚本编辑器中运行这个相同的 AppleScript ,它会返回此属性的最后一个已知值,并继续返回它以供后续调用。我在 GUI 中的任何地方都没有看到我的应用程序的实例。
在我注意到这一点后,我"ps xawww | grep MyApp"
在 shell 中运行,它告诉我已经使用我的应用程序的主可执行文件创建了一个进程,其参数看起来像这样:(-psn_0_323663
每次启动该进程时,末尾的数字都会改变——我认为这是 AppleScript(以及其他)用来跟踪和控制进程的“进程序列号”)。
这里发生了什么?我怎样才能防止这种情况发生(即在运行 AppleScript“告诉”命令时将我的应用程序作为一个完整的、正确的启用 GUI 的实例启动)?
编辑:
以上似乎只发生在我的笔记本电脑上。当我在我的 Mac Mini 上尝试完全相同的东西时(两者的操作系统版本相同:10.5.8),我只是收到一条错误消息:
$ osascript -e "tell application \"MyApp\"" -e "testprop" -e "end tell"
26:40: execution error: The variable testprop is not defined. (-2753)