NSAppleScript 和线程安全

发布于 2024-10-17 02:30:35 字数 698 浏览 5 评论 0原文

我的应用程序需要在后台线程定期调用预编译的 AppleScript。因为 NSAppleScript 不是线程安全的,所以我需要在主线程上执行脚本。我需要在执行脚本后获取返回值,所以我使用这个解决方案:

- (void) executeAppleScript:(NSMutableDictionary*) myDict
{
    NSString* returnValue = [[script executeAndReturnError:nil] stringValue];
    [myDict setValue:returnValue forKey:@"myKey"];

}

NSMutableDictionary* myDict = [NSMutableDictionary dictionary];
script = [[NSAppleScript alloc] initWithContentsOfURL:scriptURL error:nil];
[self performSelectorOnMainThread:@selector(executeAppleScript:) withObject:myDict waitUntilDone:YES];

script 是一个实例变量。我的问题是,我在后台线程上分配 script 并在主线程上执行它。 NSAppleScripts 的分配是线程安全的吗?

My app needs to call pre-compiled AppleScripts periodically on a background thread. Because NSAppleScript is not thread-safe I need to execute the scripts on the main thread. I need to get the return value after executing the script so I am using this solution:

- (void) executeAppleScript:(NSMutableDictionary*) myDict
{
    NSString* returnValue = [[script executeAndReturnError:nil] stringValue];
    [myDict setValue:returnValue forKey:@"myKey"];

}

NSMutableDictionary* myDict = [NSMutableDictionary dictionary];
script = [[NSAppleScript alloc] initWithContentsOfURL:scriptURL error:nil];
[self performSelectorOnMainThread:@selector(executeAppleScript:) withObject:myDict waitUntilDone:YES];

script is an instance variable. My question is, I am allocating script on the background thread and executing it on the main thread. Is allocation of NSAppleScripts thread-safe?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌上芳菲 2024-10-24 02:30:35

这:

因为 NSAppleScript 不是
线程安全我需要执行
主线程上的脚本。

回答这个:

是NSAppleScripts的分配
线程安全?

不,这不安全。特别是,实例的初始化可以执行许多非线程安全的操作。

This:

Because NSAppleScript is not
thread-safe I need to execute the
scripts on the main thread.

Answers this:

Is allocation of NSAppleScripts
thread-safe?

No, it isn't safe. In particular, the initialization of the instance could do any number of things that are not thread safe.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文