AppleScriptObjC構文
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/26 05:25 UTC 版)
「AppleScript」の記事における「AppleScriptObjC構文」の解説
Mac OS X v10.6で部分的に導入され(Xcode上のみ)、Mac OS X v10.10でスクリプトエディタでもCocoaの機能を利用するAppleScriptObjCが導入された。このため、現行のmacOS上ではどのマシンでも、どのAppleScriptランタイム環境上でもCocoaの機能を利用できる状態になっている。 AppleScriptObjCは従来のAppleScriptと比べて10倍以上の高速処理が可能である。ただし、それはAppleScriptのオブジェクト(string、list、recordなど)をCocoaのオブジェクト(NSString、NSArray、NSDictionaryなど)に変換したうえでCocoaのメソッドを呼び出した場合であり、従来型のAppleScriptをAppleScriptObjC環境で記述しても速度は変わらない。AppleScriptとCocoaの間でのオブジェクト変換は暗黙で行われる場合もあるが、多くの場合は明示的に変換する必要がある。 また、AppleScriptObjCではObjective-CのBlocks構文やprotocolをサポートしていないため、Cocoaのフレームワークすべてが利用できるわけではない。Cocoaのクラス名やメソッド名でAppleScriptの予約語とコンフリクトするものについては「|」で囲う必要がある(例:NSURL、URL、document、count、propertiesなど)。ドットシンタックスもサポートしていないため、現行のObjective-C 2.0にくらべるとやや冗長な表記になる。 Cocoaオブジェクトの結果表示やログ表示については、macOS標準添付のスクリプトエディタではサポートしていない。Cocoaオブジェクトのログ表示などを利用するためにはサードパーティーの開発ツール「Script Debugger」の利用が必要である。 スクリプトの例(変数「aString」のアルファベット大文字を小文字に変換する) Objective-C NSString *aString = @"123/abc/ABC.txt";[aString lowercaseString]; AppleScriptObjC use AppleScript version "2.4"use scripting additionsuse framework "Foundation"set aString to current application's NSString's stringWithString:"123/abc/ABC.txt"(aString's lowercaseString()) as string AppleScript対応アプリケーションへのtellブロック内でAppleScriptObjCの命令を呼び出すとエラーになる。このため、たとえばAdobe InDesignの書類から得られたデータをAppleScriptObjCを用いて高速にソートしたい場合などは、AppleScriptObjCの機能部分をサブルーチンとして分離し、InDesignへの命令ブロックと明示的に分ける必要がある。 なお、AppleScriptObjCで実行されるCocoa機能呼び出しはARC環境下で実行されるため、releaseなどのメソッドを呼び出すと実行環境ごとクラッシュする。
※この「AppleScriptObjC構文」の解説は、「AppleScript」の解説の一部です。
「AppleScriptObjC構文」を含む「AppleScript」の記事については、「AppleScript」の概要を参照ください。
- AppleScriptObjC構文のページへのリンク