首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDocument wide变量

NSDocument wide变量
EN

Stack Overflow用户
提问于 2012-05-29 22:50:48
回答 1查看 94关注 0票数 1

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

代码语言:javascript
复制
static id sharedInstance = nil;

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

但这并不是我想要的方式。那么,如何实现一个NSDocument中每个视图都可以访问一个变量,以及如何让后端中的每个对象都能够访问后端?我做了一个小图表:

同样重要的是,后端对象中的对象需要在"init“时访问后端对象。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-29 22:57:07

对于这些对象,您可以创建一个包含指定初始值设定项的NSObject的公共子类:

代码语言:javascript
复制
+ (id)initWithBackend:(Backend *)backend;

也许叫它BackendObject吧。然后,您的对象应该子类BackendObject并添加适当的初始化器方法,例如:

代码语言:javascript
复制
+ (id)initWithSomething:(Something *)something backend:(Backend *)backend;

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

对于视图,您可以使用以下命令从NSView子类初始化器中访问文档:

代码语言:javascript
复制
MyDocument *mydoc = [[[self window] windowController] document];

并提供访问后端的访问器,该访问器可以作为实例变量保存:

代码语言:javascript
复制
Backend *backend = [mydoc backend];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10801541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档