<Prev
index
Next>

■Objective-Cと共存する

AppleScript Studioでは、AppleScriptとObjective-Cが共存できます。

ProjectBuilderを起動します。
新規プロジェクトを作成します。

AppleScript Applicationです。
プロジェクト名を設定します。
prj008としました。

グループとファイルのResourcesからMainMenu.nibをダブルクリックして


インターフェースビルダーでnibファイルを編集します。
windowに名前を付けます。"wi"としました。


windowにTextFieldを1つ作ります。
text fieldに名前を付けます。"tf" としました。

少し幅を広げておきます。w:160にしました。


windowにボタンを2つ作ります。
InfoパレットのAttributeからTitleを変更します。(ボタンをダブルクリックしてもできます。)
一つは「Objective-C」、もう一つは「AppleScript」としました。

まず、「AppleScript」ボタンの方からコードを書きます。
ボタンを選択して、InfoパレットのAppleScriptから、Event HandlerのAction,clickedにチェックを入れます。
ScriptのApplication.applescriptにもチェックを入れます。

「EditScript」ボタンを押してスクリプトを書いていきます。


on clicked theObject

set contents of text field "tf" of window "wi" to "from AppleScript"
end clicked


次はObjective-Cの方です。
こちらは、MVC(Model-View-Controller)という、流用するときのことを考えた作る方が一般的ですので、そのように作ります。
簡単にいえば、「入力」「処理」「出力」をわけて作るということです。
「入力」はボタン、「出力」はテキストフィールドなので、「処理」を行う部分を作ります。

Classタブをクリックして、一番左にあるNSObjectを選択します。

「Classes」メニューから「SubClass NSObject」を選択します。

すると、NSObjectの右側に「MyObject」というのができます。(名前を変えられますが、今回はこのまま)

これが「処理する部分」です。
これに、入り口と出口を作ります。
MyObjectを選択して、
「Classes」メニューから「Add Outlet to MyObject」を選択します。

InfoパレットのAttributesを見ると、「myOutlet」という名のOutletが一つできたことが分かります。

これが出口になります。

次に
Add Action to MyObjectを選択します。
InfoパレットのAttributesを見ると、「myAction:」という名のActionが一つできたことが分かります。

これが入り口(受け口)となります。

これで、「処理する部分」のがどんなものかという「仕様書」ができました。
これが「クラス」というものですが、覚えなくていいです。
この仕様書をもとに、「処理する部分」を作成します。
MyObjectを選択した状態で、
「Classes」メニューから「Instantiate MyObject」を選択します。

MainMenu.nibのInstanesにMyObjectができました。
これが、「インスタンスを作成する」ということですが、覚えなくていいです。

ボタンからMyObjectにつながり、その結果がテキストフィールドにつながるということを設定します。
「Objective-C」ボタンを[control]キーを押したままクリックすると、線があらわれますので、そのままMyObjectまで線を引っ張って、MyObject上で放します。

InfoパレットがConectionに変わり、OutletにMyAction:が表示されますので、

そこを選択し、「Connect」ボタンを押します。
これで、Actionが接続されました。

同じようにして、MyObjectからテキストフィールドに接続します。[cotlol]キーを押しながら線をつなげ、

myOutletが表示されたら、「Connect」です。

このMyObjectの動き方をProjectBuilderに送ってやります。
Classタブをクリックして、MyObjectを選択し、「Classes」メニューから「Create files for MyObject 」を選択します。

作るファイルと、どこに作るかを聞いてきますので、そのままChooseボタンを押して下さい。

これでInterfaceBuilderでの作業は終了です。
ProjectBuilderに戻るとOther SourcesにMyObject.hとMyObject.mというファイルが追加されています。
「.h」はこのクラスがどんなものかを定義するファイル、「.m」は実際にどんな行動をするかというファイルですので、この「.m」にObjective-Cコードを書きます。

MyObject.mをクリックすると、右側に
#import "MyObject.h"

@implementation MyObject

- (IBAction)myAction:(id)sender
{
}

@end

という訳の分からないコードが出てきます。

気にせずに
{
}
の間に
[myOutlet setStringValue:@"from Objective-C"];

と書いてみましょう。
出口に、"from Objective-C"という文字をセットするという命令です。

#import "MyObject.h"

@implementation MyObject

- (IBAction)myAction:(id)sender
{
[myOutlet setStringValue:@"from Objective-C"];
}

@end


となります。
保存して実行してみましょう。

「AppleScript」をクリックするとfrom AppleScriptという文字が、
「Objective-C」をクリックするとfrom Objective-Cという文字が表示されます。

このように、Objective-CとAppleScriptを混在して一つのプログラムを作ることができます。


2001.12.22 (C)Satoshi Oomori