load nib

なんで、いまさら Mac OS X 10.3.9 と Mac OS X 10.4 をいったりきたりしているか?

Xcode 2.1...というより、AppleScript Studio が問題なんですね。新しいことはいいことだ、とばかりにインストールしたのはいいものの使いにくくない(=バグが多くない)でしょうか?。

AppleScript Studio を使っていると、挙動がおかしいところがよくある。スクリプティング自体が悪いのか、Xcode の問題なのか、AppleScript Studio か...どれかよく分からない。で、10.3.9 上の Xcode 1.5 を使って確認のためにいったりきたり。

Xcode ではなく、AppleScript Studio 1.4 の問題な気もします。具体的には、次のようなコード。

property notifWindow : missing value

on clicked theObject
    if name of theObject is "debug" then
        if notifWindow is missing value then
            load nib "Notification"
            set notifWindow to window "notification"
            show notifWindow
        else
            show notifWindow
        end if
    end if
end clicked

ウィンドウにボタンがあってクリックすると nib ファイルをロードしてその nib のウィンドウを表示する...ロードしたウィンドウを閉じて、再度ボタンをクリックしてウィンドウを表示させる。こういったことをしたいわけです。上記を実行すると、ウィンドウを閉じて再度表示するときにエラーになります。

このコード自体は珍しいものでもなく Dev Tools のサンプルの中にもありますし、今まで正常に動いていました。上記のコードを以下のようにすると動きます。

property notifWindow : missing value

on clicked theObject
    if name of theObject is "debug" then
        if not (exists notifWindow) then
            load nib "Notification"
            set notifWindow to window "notification"
            log ("Nib loaded")
            show notifWindow
        else
            log ("Nib unloaded")
            show notifWindow
        end if
    end if
end clicked

if の条件文を変更しただけです。実行すると分かるのですが、毎回ロードしています。プロパティの値を調べても、最初に nib をロードしたときのウィンドウの参照がちゃんと入っている。にもかかわらず、二度目の呼び出しでウィンドウがないと判断されてしまいます。もちろん、ウィンドウを閉じたときに解放しているのではありません。

結論。悪いのは、AppleScript Studio 1.4。また、Xcode にも問題はいっぱいあります。AppleScript からの操作がおかしい...ということがよくあります。特に、Xcode 2.1。

Xcode 1.5 は、まだまだ手放せそうにないです。

0 件のコメント :

コメントを投稿