NSAppleScript и безопасность потоков - PullRequest
1 голос
/ 13 февраля 2011

Мое приложение должно периодически вызывать предварительно скомпилированные сценарии 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 поточно-ориентированным?

1 Ответ

3 голосов
/ 13 февраля 2011

Это:

Поскольку NSAppleScript не является потокобезопасным, мне нужно выполнить сценарии в главном потоке.

Ответы на это:

Является ли выделение NSAppleScripts поточно-ориентированным?

Нет, это небезопасно.В частности, инициализация экземпляра может сделать любое количество вещей, которые не являются потокобезопасными.

...