Я пытаюсь добавить тривиальную поддержку AppleScript в приложение Какао. Приложение периодически выполняет проверку, и я просто хочу, чтобы оно выполняло ее по запросу.
Я пытаюсь следовать примеру Apple SimpleScriptingVerbs .
Я создал подклассы NSScriptCommand
следующим образом:
Заголовок:
#import
@interface rdrNotifierUpdateCommand : NSScriptCommand {
}
-(id)performDefaultImplementation;
@end
Реализация:
#import "rdrNotifierUpdateCommand.h"
#import "rdrNotifierAppDelegate.h"
@implementation rdrNotifierUpdateCommand
-(id)performDefaultImplementation {
NSLog(@"Works at last");
[((rdrNotifierAppDelegate *)[[NSApplication sharedApplication] delegate])
checkForNewItems]; // This just fires the timer
return nil;
}
@end
Мой .sdef
файл выглядит следующим образом (и проблема, похоже, существует, но я не могу ее найти):
Info.plist
настроен соответствующим образом.
Но когда я пытаюсь запустить следующий сценарий в редакторе AppleScript:
tell application "rdrNotifier"
do update
end tell
Я получаю сообщение об ошибке, что переменная «обновление» не определена.
Я могу открыть словарь для своего приложения из редактора AppleScript (т. Е. Он успешно зарегистрирован).
Изменить: найдено решение
Проблема действительно была в файле sdef
: я был без указания, что приложение может отвечать на команду. Мое окончательное определение выглядит следующим образом (код Obj-C без изменений):
Любые улучшения / советы / критические замечания по-прежнему приветствуются.