0

ASOC を使用してクラスの +initialize メソッドをオーバーライドしようとしていますが、クラス メソッドをオーバーライドする方法が見つかりません。それは可能ですか?

私が話している言語について混乱を避けるために、ここにいくつかのコードがあります:

script FLAppDelegate
    property parent: class "NSObject"

    -- -- Class Methods -- --
    -- Insert code here

end script
4

2 に答える 2

2

私はいくつかのテストを行いましたが、私が知る限り、AppleScriptObjCを使用して定義されたメソッドは、クラスメソッドとインスタンスメソッドの両方です。

AppleScriptObjCファイルがあるとしましょう。

script iTunesController
   property parent: class "NSObject"

   on playpause()
      tell application id "com.apple.iTunes" to playpause
   end playpause
end script

Objective-Cの方法では、次の両方が行われます。

- (void)callASOC
{
   iTunesControllerInstance = [NSClassFromString(@"iTunesController") new];
   [iTunesControllerInstance playpause];
   [iTunesControllerInstance release];
}

- (void)callASOC
{
   [NSClassFromString(@"iTunesController") playpause];
}

AppleScriptObjCファイルでplaypauseハンドラーを呼び出します。後者の定式化では、コンパイル時に警告が生成されますが、機能します。

これを確認または反論する文書を見つけることができませんでした。

于 2012-12-18T15:54:05.863 に答える
0

NSClassFromString を思い出させてくれた @Friziab に感謝します

したがって、別のクラス (スクリプト) (NSView サブクラス) から AppDelegate.applescript の AppleScriptObjC メソッドを呼び出すことができます。

私はAppleScriptObjCを使用していないので、適切な方法があるかもしれませんが、これはうまくいきました

 current application's  NSClassFromString("AppDelegate")'s popWindow()
于 2014-11-23T10:27:21.303 に答える