1 votos

¿Por qué AppleScript en El Capitan funciona diferentemente?

¿Por qué en El Capitan esta aplicación dice 3 1 2? Antes El Capitan dice 1 2 3.

Cuando esta secuencia se hace clic en, debe decir 1 2 3.

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

3voto

Pejvan Puntos 376

La en idle y quit controlador son para los Applets, Scripts no. Los Applets y scripts son diferentes, sin embargo ambos están escritos en Applescript.

Un applet, es la aplicación de script, que apoyan idle y quit controladores, mientras que la secuencia de comandos es como cualquier otro script en cualquier idioma; ejecuta y hasta el final, no se sabe cuando va a salir, o cuando ha estado inactivo. Applet es como cualquier otra aplicación, si hace clic derecho y "Abrir el Paquete de Contenido" de un applet podrás ver el parecido. Applet puede tener recursos, puede ser CodeSigned, puede tener varios script y compartido sin ningún problema.

Ese es tu problema, seleccione la opción para guardar la secuencia de comandos de la aplicación cuando se le solicite, seleccione también "Permanecer abiertos después de ejecutar el controlador", entonces su idle de controlador de ejecutar.

Algunas cosas más, siempre es una buena idea para volver de cada controlador, que no están en run y testing, esto puede causar que el idle de controlador para que no se ejecute como va a estar esperando para run a fin. Usted también debe introducir continue quit en su quit de controlador, o de lo contrario nunca va a salir, te vas a tener que forzar el cierre.

Para más info Guía de Lenguaje de AppleScript

0voto

Yasmine Mustafa Puntos 21

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

El orden exacto de la "ejecutar" y "ociosos" mensajes nunca han sido garantizado, así que es posible que ambos órdenes ({1, 2, 3} y {3, 1, 2}) son consideradas correctas.

Sin embargo, si el orden de la ejecución y mensajes de inactividad es importante la secuencia de comandos, puede utilizar una secuencia de comandos de la propiedad para permitir que el controlador de inactividad saber cuando el controlador ha ejecutado y no hacer nada hasta que se tiene, 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 cuenta que el restablecimiento didRun en la quit controlador es necesario debido a que los valores de la propiedad normalmente persisten a través de pistas (por ser escrita de nuevo para el archivo de secuencia de comandos después de la ejecución).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X