簡単なObjective-Cアプリケーションを作成しようとしています。ステータスバーに単語を表示し、AppleScriptを介して単語を更新できるアプリが必要です。正直なところ、私はAppleScriptについてはほとんど知らず、Objective-Cについても何も知りません。しかし、メニュー項目があり、「quit」などのコアAppleScriptコマンドに応答するメニューバーアプリを入手するのに2時間しかかからなかったので、それほど難しいことではありません。残念ながら、私は次の6時間かけて、このアプリケーションにAppleScriptを介して取得および設定できる単純なプロパティを与える方法を見つけようとしました。
これが私の.hコードです:
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
IBOutlet NSMenu *statusMenu;
NSStatusItem *statusItem;
}
@property (assign) IBOutlet NSWindow *window;
- (NSString*) foobaz;
@end
このfoobaz
メソッドは、読み取り可能なプロパティを作成するために使用していたものです(*window
XCodeによって提供された定型文の一部であり、当面の問題には関係ありません)。これが私の.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="StatusMenuApp suite" code="smas"
description="StatusMenuApp specific classes.">
<class name="application" code="smaa" inhereits="application"
description="Application object.">
<cocoa class="AppDelegate"/>
<property name="foobaz" code="smas" type="text" access="r"/>
</class>
</suite>
</dictionary>
だから私はここでAppleのSimpleScriptingの例のようにセットアップしました:https ://developer.apple.com/library/mac/#samplecode/SimpleScripting/Introduction/Intro.html
ただし、スクリプトエディタでこれを実行してみました。
tell application "StautsMenuApp"
properties
end tell
そして、Appleの例とは異なり、コアプロパティのリストを取得するだけで、foobaz
何も言及されていません。Appleの例では、カスタムプロパティを実行すると、コアプロパティの横に表示されます。
これについて100のバリエーションを試し、100の例を読んだように感じますが、何も機能しません。どんな助けでも大歓迎です。