我正在尝试使用 ASOC 覆盖类的 +initialize 方法,但我找不到覆盖类方法的方法。甚至可能吗?
为了不让任何混淆我正在谈论的语言,这里有一些代码:
script FLAppDelegate
property parent: class "NSObject"
-- -- Class Methods -- --
-- Insert code here
end script
我已经做了一些测试,据我所知,虽然很奇怪,但使用 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 处理程序。后一种公式将在编译时生成警告,但有效。
我找不到任何证实或反驳这一点的文件。
感謝讓我想起NSClassFromString的@Friziab
所以我可以在我的AppDelegate.applescript中从另一个类(script)(NSView子类)调用AppleScriptObjC方法。
我不使用AppleScriptObjC,所以可能有正确的方法,但这有效
current application's NSClassFromString("AppDelegate")'s popWindow()