Добавить свойство сценариев в приложение Какао, полученное из NSObject <NSApplicationDelegate>?
Может кто-нибудь указать мне на пример этой работы. Я просто хочу установить значение свойства через AppleScript. Я прошел все примеры сценариев, которые настроены по-разному.
<?xml version="1.0" encoding="UTF-8"?>
<dictionary title="">
<suite name="Circle View Scripting" code="bccS" description="Commands and classes for Circle View Scripting">
<class name="application" code="capp" description="" >
<cocoa class="NSApplication"/>
<property name="circletext" code="crtx" type="text" description="The text that gets spun into a circle">
<cocoa key="circleText"/>
</property>
<property name="myint" code="crmy" type="integer" description="The text that gets spun into a circle">
<cocoa key="myInt"/>
</property>
</class>
</suite>
заголовочный файл:
// header
@interface MyDelegate : NSObject <NSApplicationDelegate>
{
WebScriptObject *scriptObject;
WebView *webView;
NSWindow *window;
NSInteger myInt;
}
// implementation
- (BOOL)application:(NSApplication*)sender delegateHandlesKey:(NSString*)key
{
return key isEqualToString:@"myInt"] || [key isEqualToString:@"circleText"];;
}
-(NSInteger)myInt
{
NSInteger myInteger = 42;
return myInteger;
}
-(void)setMyInt:(NSInteger*)newVal
{
// do nothing right now
NSLog(@"SETTER CALLED");
}
// Попытка Applescript установить свойство "myInt"
tell application "BrowserConfigClient"
set myint to 7
properties
end tell
В конечном счете, вызывается метод DelegateHandlesKey, я могу вернуть значение для свойства, но метод установки никогда не вызывается. Заранее спасибо...
1 ответ
Ваш оператор метода содержит ошибку...
-(void)setMyInt:(NSInteger*)newVal
Не должно быть "*", поскольку NSInteger не является переменной "указателя". В комментариях к вашему вопросу я вижу, что Кен Томасес уже сказал вам об этом, поэтому обязательно исправьте это.
Так что, если это не ваша проблема, посмотрите на файл sdef. Я вижу, вы не закрыли словарь тега. Вам нужно это как последняя строка этого файла.
</dictionary>
У меня также есть это как вторая строка в моих файлах sdef...
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">