【问题标题】:NSAppleScript and thread safetyNSAppleScript 和线程安全
【发布时间】:2011-02-13 08:46:46
【问题描述】:

我的应用需要定期在后台线程上调用预编译的 AppleScripts。因为 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 的分配是线程安全的吗?

【问题讨论】:

    标签: objective-c multithreading cocoa thread-safety applescript


    【解决方案1】:

    这个:

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

    回答这个问题:

    是分配NSAppleScripts 线程安全?

    不,这不安全。特别是,实例的初始化可以做许多非线程安全的事情。

    【讨论】:

    • 谢谢,我还没有遇到任何问题,但我不想冒险。
    • 您是否对 Macintosh 的每个品牌/型号、所有 CPU 架构以及所有版本的操作系统(包括尚未发布的版本)进行了测试?除非你能始终如一地做到这一点,否则你的代码中就会有一颗定时炸弹......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多