Приложение с поддержкой Applescript и проблема с какао
Я начну с того, что я полностью новичок в том, что касается AppleScript. Итак, вы здесь...
Это то, что я сделал до сих пор:
- Изучил яблочный справочник по SimpleScripting
- Реализовано ИДЕНТИЧНО
.sdef
файл - Установить новое свойство
myname
- Установить основной класс (в
info.plist
) чтобыppApplication
(мой основной класс, наследующий отNSApplication
) - Настройте средство доступа к
myname
имущество
Мой файл sdef:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary xmlns:xi="http://www.w3.org/2003/XInclude">
<xi:include href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" xpointer="xpointer(/dictionary/suite)"/>
<suite name="MyApplication Suite" code="PpRm" description="MyApplication Suite">
<class name="application" code="capp" description="MyApplication's top-level scripting object." inherits="application">
<cocoa class="ppApplication"/>
<property name="myname" code="PEnm" description="The name of the application" type="text" access="r">
<cocoa key="myname"/>
</property>
</class>
</suite>
</dictionary>
Мой класс ppApplication:
#import <Foundation/Foundation.h>
#import "ppCore.h"
@interface ppApplication : NSApplication {
ppCore* core;
}
@property (assign) ppCore* core;
@property (readonly) NSString* myname;
@end
#import "ppApplication.h"
@implementation ppApplication
@synthesize core;
- (void)awakeFromNib
{
[self setCore:[[ppCore alloc] init]];
}
/*******************************************************
*
* APPLESCRIPT SUPPORT
*
*******************************************************/
- (NSString*)myname
{
return @"DONE";
}
@end
Теперь вот проблема:
Когда я пытаюсь запустить следующий скрипт (в редакторе AppleScript)
tell application "myApplication"
myname
end tell
Я получаю the variable myname is not defined
ошибка.
Тем не мение:
Если я вернусь к Xcode, настройкам сборки и изменим имя продукта на - скажем, myApplicationX и перекомпилирую, то приведенный выше код (изменив его на tell application "myApplicationX"
) РАБОТАЕТ.
Итак, что я делаю не так? Возможно ли, что редактор AppleScript "не общается" с моей активной компиляцией приложения, а с предыдущей? Как я могу справиться с этим БЕЗ изменения названия моего продукта?
1 ответ
Не было никаких проблем с приведенным выше кодом.
Просто перезапустите AppleScript Editor (после внесения каких-либо серьезных изменений в приложение).