Как я могу создать метод класса, используя AppleScriptObjC

Я пытаюсь переопределить метод +initialize класса с помощью ASOC, но не могу найти способ переопределить метод класса. Это вообще возможно?

Чтобы не допустить путаницы в отношении языка, о котором я говорю, вот некоторый код:

script FLAppDelegate
    property parent: class "NSObject"

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

end script

person Frizlab    schedule 11.12.2012    source источник


Ответы (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. Последняя формулировка будет генерировать предупреждение во время компиляции, но работает.

Документов, подтверждающих или опровергающих это, я не нашел.

person Frizlab    schedule 18.12.2012

Спасибо @Friziab, который напомнил мне о NSClassFromString.

Таким образом, я мог бы вызвать метод AppleScriptObjC в моем AppDelegate.applescript из другого класса (скрипта) (подкласс NSView)

Я не использую AppleScriptObjC, поэтому может быть правильный способ сделать это, но это сработало

 current application's  NSClassFromString("AppDelegate")'s popWindow()
person markhunte    schedule 23.11.2014