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 文件中的播放暂停处理程序。后一种公式将在编译时生成警告,但有效。

我找不到任何文件证实或反驳这一点。

于 2012-12-18T15:54:05.863 回答
0

感谢@Frizab,他让我想起了 NSClassFromString

所以我可以从另一个类(脚本)(NSView 子类)调用我的 AppDelegate.applescript 中的 AppleScriptObjC 方法

我不使用 AppleScriptObjC,所以可能有正确的方法,但这有效

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