1

所以我需要一个带有后端实例的 NSDocument,所有视图都可以访问并且后端中的对象可以访问。目前我有一个共享实例,但这将文档限制为只有一个。代码就像这样:

static id sharedInstance = nil;

+(void)initialize {
    if (self == [ApricumBackend class]) {
        sharedInstance = [[self alloc] init];       
    }
}
+ (id)mainBackend {
    return sharedInstance;
}

但这并不像我想要的那样工作。那么我怎样才能实现一个 NSDocument 有一个每个视图都可以访问的变量,我怎样才能让后端中的每个对象都能够访问后端呢?我做了一个小图表: 很棒的图表

重要的是后端对象中的对象需要在“初始化”时访问后端对象

谢谢

4

1 回答 1

1

对于对象,您创建一个NSObject包含指定初始化程序的公共子类:

+ (id)initWithBackend:(Backend *)backend;

也许叫它BackendObject。然后你的对象应该继承BackendObject并添加适当的初始化方法,例如:

+ (id)initWithSomething:(Something *)something backend:(Backend *)backend;

self然后这些初始化方法可以调用超类初始化方法,并且后端对象(图中显示为拥有它们)在初始化它们时需要传递。

对于视图,您可以使用以下方法从NSView子类初始化程序中访问文档:

MyDocument *mydoc = [[[self window] windowController] document];

并提供一个访问器来访问后端,它可以作为实例变量保存:

Backend *backend = [mydoc backend];
于 2012-05-29T14:57:06.937 回答