Per eseguire AppleScript forniti dall'utente al di fuori della sandbox (10.8+), utilizzare NSUserAppleScriptTask
Per eseguire file incorporati in bundle dell'applicazione, o script fornite dall'utente .scpt in 10.7 o precedenti, utilizzare NSAppleScript.
NSUserAppleScriptTask e NSAppleScript sono entrambi un po 'noiosi, intendiamoci. Nessuno dei due fornisce la conversione automatica dei dati tra i tipi Cocoa e AS, il che significa molto lavoro manuale con NSAppleEventDescriptors per passare parametri e risultati. Le istanze di NSAppleScript forniscono un supporto di persistenza parziale: le proprietà dello script mantengono lo stato tra più chiamate di gestori, ma non c'è modo di salvare lo script modificato sul disco in modo che eventuali modifiche vengano perse una volta deallocato. E NSUSerAppleScriptTask è un affare strettamente one-shot, quindi lo stato di script non persiste affatto tra una chiamata e l'altra.
per una più profonda integrazione tra il codice AppleScript e objC incorporato all'interno del vostro pacco app, utilizzare AppleScriptObjC (10.6+):
ASOC è un bidirezionale è simile a PyObjC o RubyCocoa, consentendo di scrivere il codice AppleScript all'interno di oggetti script che appaiono al codice ObjC come normali classi Cocoa, consentendo al codice ObjC di chiamare i gestori AS e il codice AS per chiamare i metodi ObjC. I tipi comuni di ObjC e AS (int, doppi, NSString, NSArrays, ecc.) Vengono automaticamente spostati/convertiti quando si attraversa il ponte, quindi non richiede altro lavoro o un cast occasionale sul lato AS.
ASOC non è perfetto (i documenti di Apple fanno schifo, il bridging non è gratuito e glitch non sono sconosciuti), ma per interagire con app scriptable da ObjC è il meglio di un insieme di scelte altrimenti piuttosto spazzatura .
Cosa otterresti se cercassi "[oggettivo-c] mele" qui? –