¿Por qué AppleScript en El Capitán funciona de manera diferente?

¿Por qué en El Capitán esta aplicación dice 3 1 2? Antes de El Capitán dijo 1 2 3.

Cuando se hace doble clic en este script, necesita decir 1 2 3.

  • Pbpaste / pbcopy lento
  • Obteniendo datos de campo de una database Bento usando Applescript
  • Applescript Service falla debido a la falta de restricciones
  • Salga de la pantalla completa para ambas windows al salir de la vista dividida
  • Intentando replace el sonido de volumen en OS X por lo que estaba presente antes. Encuentro de problemas de permissions incluso como root. ¿Ayuda?
  • Copie files específicos y mantenga la estructura de la subcarpeta
  • on run say "1" testing() end run on testing() say "2" end testing on idle say "3" return 60 end idle on quit end quit 

  • Sincronización Bidireccional de Archivo / Carpeta
  • ¿Por qué Time Machine no hace copys de security progtwigdas después de mi actualización de Yosemite -> El Capitan?
  • Alfnetworking Terminal / Shell Command no funciona
  • ¿Cómo tener la date de GNU en OS X?
  • Acceso directo global para el elemento del menu dentro de la barra de menus
  • 2015 MBP no quiere despertarse por la mañana
  • 2 Solutions collect form web for “¿Por qué AppleScript en El Capitán funciona de manera diferente?”

    El controller idle y de quit son para Applets , no Scripts. Los applets y los scripts son diferentes, sin embargo, ambos están escritos en Applescript.

    Un applet es una aplicación de script que admite manipuladores idle y de quit , mientras que el script es como cualquier otro script en cualquier idioma; se ejecuta y hasta el final, no sabe cuándo está por salir, o cuando está inactivo. Applet como cualquier otra aplicación, si hace clic derecho y "Abrir contenido del package" de un applet verá el parecido. Applet puede tener resources, puede tener CodeSigned, puede tener múltiples secuencias de commands y compartirse sin ningún problema.

    Ese es su problema, elija save el script como una aplicación cuando se le solicite, también select "Permanecer abierto después del controller de ejecución" , y luego se ejecutará su controller idle .

    Pocas cosas más, siempre es una buena idea volver a salir de cada controller, que no está run y testing , esto puede hacer que el controller idle no se ejecute, ya que estará esperando a que la run termine. También debe insert continue quit en su controller de quit , de lo contrario, nunca se cerrará; Tendrás que obligarlo a abandonarlo.

    Para más información Guía de idiomas AppleScript

    Primero: no puedo reproducir su problema en OS X El Capitan 10.11 (15A284). Tu script dice "1", "2", "3" cada vez que lo ejecuto.

    Es posible que nunca se haya garantizado el order exacto de los posts "ejecutar" y "inactivo", por lo que es posible que ambos pedidos ({1, 2, 3} y {3, 1, 2}) se consideren correctos.

    Sin embargo, si el order de los posts de ejecución y inactivos es importante para su secuencia de commands, puede usar una propiedad de secuencia de commands para que el manejador inactivo sepa cuándo el manejador de ejecución ya se ha ejecutado y no hacer nada hasta que lo haya hecho, por ejemplo,

     property didRun : false on run say "1" testing() set didRun to true end run on testing() say "2" end testing on idle if not didRun then say "has not run" return 1 end if say "3" return 3 end idle on quit set didRun to false say "quit" continue quit end quit 

    Tenga en count que es necesario restablecer didRun en el controller de quit porque los valores de propiedad normalmente persisten en todas las ejecuciones (al volver a escribirse en el file de script después de la ejecución).

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).