1

スクリプト可能にしようとしているココア アプリケーションがあります。NSArray プロパティを含むモデル クラス (NSObject のサブクラス) があり、別のクラスの多数のカスタム "Element" オブジェクトを保持します。モデル クラスの配列プロパティは、そのクラスの外では必要ない (したがって、NSApplication のサブクラス/カテゴリに含めたくない) ため、このアプリケーションのこの設計パターンが気に入っています。ただし、スクリプト可能な Cocoa アプリケーションを作成するために私が見たすべての例では、最上位のスクリプト オブジェクトは、公開されたデータをプロパティまたは要素として含む NSApplication のサブクラスまたはカテゴリです。

対照的に、NSApplication にはプロパティもメソッドもありません。簡単な例として、以下のコードを参照してください (私のプロジェクトの DataModel.h/DataModel から):

#import <Foundation/Foundation.h>
#import "Element.h"

@interface DataModel : NSObject

@property (nonatomic) NSArray *elements;

@end

@implementation DataModel

@synthesize elements = _elements;

- (id)init {
    if (self= [super init]) {
        Element *element1 = [[Element alloc] init];
        element1.elementName = "first element";
        element1.elementNumber = "22";
        Element *element2 = [[Element alloc] init];
        element2.elementName = "second element";
        element2.elementNumber = "24";
        self.elements = [NSArray arrayWithObjects:element1, element2, nil];
    }
    return self;
}

@end

およびこのコード (Element.h/Element.m の場合 - ViewController の「要素」NSArray に格納されているオブジェクト:

#import <Foundation/Foundation.h>

@interface Element : NSObject {

}

@property (nonatomic) NSString *elementName;
@property (nonatomic) NSString *elementNumber;

@end

#import "Element.h"

@implementation Element

@synthesize elementName = _elementName, elementNumber = _elementNumber;

@end

データ モデルが独自のクラスである場合、sdef ファイルで「要素」をアクセス可能なプロパティにするにはどうすればよいですか? DataModel または Element クラスにオブジェクト指定子が必要ですか? この場合、NSApplication にはプロパティ、要素、またはコマンドは含まれません。

ありがとう!

4

0 に答える 0