моя система отказывается закрываться / перезапускаться с помощью класса NSAppleScript - PullRequest
14 голосов
/ 07 февраля 2012

Я использую CFPlugin для контекстного меню и наложения значка на 10,5 (аналогично scplugin).Для связи между моим приложением и искателем я использую distributed object.После установки моего плагина в папке Contextual menu items моя система отказывается перезапускать / shutdow / Logout.В мониторе активности я не могу выйти из поисковика, для поиска работает только принудительное завершение.На консоли я получаю 10.5.8

ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1805620379  

Без связи между Finder и моим приложением, перезагрузка системы / shutdow / Logout работают нормально.
На 10.5.4

loginwindow[41]: ERROR | WSActivateApp | SetFrontProcess({0, 7980956}) returned error -600. Unable to activate process.

loginwindow[41]: ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1780878507

Может кто-нибудь, пожалуйста, помогите мне?

РЕДАКТИРОВАТЬ

Моя проблема решена.Я использовал NSAppleScript для выполнения сценария Apple.Теперь я использую NSTask и моя система перезагрузки / shutdow / Logout работают нормально.Может кто-нибудь объяснить, пожалуйста, причину этого?

Ответы [ 2 ]

1 голос
/ 12 марта 2012

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

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

С другой стороны, NSTask правильно многопоточный, поэтому последовательность не будет заблокирована, и ваш компьютер будет корректно выключен.

Вот несколько релевантных ссылок, собранных вокруг:

0 голосов
/ 20 июля 2012

Моя проблема решена. Я использовал NSAppleScript для выполнения сценария Apple. Теперь я использую NSTask, и моя система перезагрузки / выключения / выхода работают нормально

...