因此,我需要一个具有后端实例的NSDocument,所有视图都可以访问,后端中的对象也可以访问。目前,我有一个共享实例,但这将文档限制为只有一个。代码就像这样:
static id sharedInstance = nil;
+(void)initialize {
if (self == [ApricumBackend class]) {
sharedInstance = [[self alloc] init];
}
}
+ (id)mainBackend {
return sharedInstance;
}但这并不是我想要的方式。那么,如何实现一个NSDocument中每个视图都可以访问一个变量,以及如何让后端中的每个对象都能够访问后端?我做了一个小图表:

同样重要的是,后端对象中的对象需要在"init“时访问后端对象。
谢谢
发布于 2012-05-29 22:57:07
对于这些对象,您可以创建一个包含指定初始值设定项的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];https://stackoverflow.com/questions/10801541
复制相似问题