NSDocument широкая переменная
Поэтому мне нужен NSDocument с экземпляром бэкэнда, к которому могут обращаться все представления и объекты в бэкэнде. На данный момент у меня есть общий экземпляр, но это ограничивает документ только одним. код просто так:
static id sharedInstance = nil;
+(void)initialize {
if (self == [ApricumBackend class]) {
sharedInstance = [[self alloc] init];
}
}
+ (id)mainBackend {
return sharedInstance;
}
Но это не работает так, как я хочу. Итак, как я могу добиться того, чтобы один NSDocument имел одну переменную, к которой может обращаться каждое представление, и как я могу получить каждый объект в бэкэнде, чтобы иметь доступ к бэкэнду? Я сделал небольшой график:
Важно также то, что объекты в объекте бэкэнда должны иметь доступ к объекту бэкэнда, пока они "инициализируют"
Спасибо
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];