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