アプリケーションバンドルに埋め込まれたファイル、またはユーザー提供のスクリプトを.scpt実行するにはNSUserAppleScriptTask
を使用し、サンドボックス(10.8+)の外にユーザ供給のAppleScriptを実行するには10.7以前ではNSAppleScriptを使用してください。
NSUserAppleScriptTaskとNSAppleScriptはどちらも少し不自由です。ご心配ください。どちらも、CocoaとASタイプの間で自動的なデータ変換を提供しません。つまり、パラメータと結果を渡すためにNSAppleEventDescriptorsを使って手作業で作業することです。 NSAppleScriptインスタンスは、部分的な永続性サポートを提供します。スクリプトのプロパティは、複数のハンドラ呼び出しの状態を保持しますが、変更されたスクリプトをディスクに保存する方法はないため、変更が失われると失われます。 NSUSerAppleScriptTaskは厳密にワンショットの関係であるため、スクリプト状態は呼び出し間ではまったく持続しません。
:
アプリのバンドル内に埋め込まれたAppleScriptとにObjCコードの間のより深い統合のために
は、AppleScriptObjC(10.6以降)を使用しますASOCは双方向のブリッジですPyObjCやRubyCocoaに似ているため、AppleScriptコードをスクリプトオブジェクト内に書くことができます。スクリプトオブジェクトはObjCコードに通常のCocoaクラスとして表示され、ObjCコードではASハンドラを呼び出し、ASコードではObjCメソッドを呼び出すことができます。一般的なObjCとASの型(int、double、NSStrings、NSArraysなど)は、ブリッジを通過するときに自動的にラップ/変換されるため、AS側で時折キャスト以外の追加作業は必要ありません。
ASOCは完璧ではありません(Apple独自のドキュメント、ブリッジはフリーダイヤルではなく、グリッチは不明ではありません)が、ObjCのスクリプト可能なアプリケーションとの対話のためには、 。
出典
2013-05-12 12:00:50
foo
ここで '[objective-c] applescript'を検索するとどうなりますか? –