Приложение с поддержкой 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&apos;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 (после внесения каких-либо серьезных изменений в приложение).

Другие вопросы по тегам