Я работаю над своим первым Mac-приложением на основе документов.
Я создал подкласс NSDocument
, переопределив такие методы, как
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (void)makeWindowControllers;
Контроллер главного окна является подклассом NSWindowsController
, который содержит два подкласса NSViewController .
] Проблема, с которой я столкнулся, заключается в том, что мне нужен доступ к текущему документу из этих контроллеров представления.Я вызываю
MyDocument *myDocument = [[NSDocumentController sharedController] currentDocument];
Сначала, сразу после запуска приложения, создается новый документ.Затем создается главное окно и его контроллеры представления, но метод выше возвращает nil . Вот журнал (используя NSLog ). Я получаю:
Just created this new document: <MyDocument: 0x10040ff10>
I'm in a view controller and current document is (null)
После этого создание нового документа и вызов этого метода приводит к ненулевому указателю, но он указывает не на нужный документ, а к первому:
Just created this new document: <MyDocument: 0x100437e10>
I'm in a view controller and current document is <MyDocument: 0x10040ff10>
Обратите внимание, что после создания второго документа currentDocument
указывает на первый документ, а не на второй.
Есть идеи, что я здесь упускаю или делаю неправильно? Когда currentDocument
установлен для NSDocumentController
?