В настоящее время я использую команды suspendExecution
и resumeExecutionWithResult
NSScript для асинхронного выполнения сценариев Apple в моем приложении. Ниже приведен набор основных шагов, которые я предпринял для достижения того же.
1) Получите команду сценария и сохраните ее в IVAR. Теперь приостановите выполнение команды с помощью [NSScriptCommand suspendExecution]
2) Выполнять любые вызовы транзакций, которые будут возвращать результаты асинхронно.
3) В completionHandler
асинхронного вызова возобновите выполнение с извлеченными результатами, т.е.
[NSScriptCommand resumeExecutionWithResult:result]
Упомянутые выше шаги прекрасно работают, когда я запускаю сценарии из редактора сценариев. но использование объекта NSAppleScript
(при выполнении сценариев, скажем, из меню сценариев) для выполнения тех же результатов приводит к следующей ошибке
"AppleEvent timed out. Error Number: -1712"
Ошибка тайм-аута возникает почти мгновенно. Любые указатели на то, как эту проблему можно исправить, будут очень признательны.