我已经创建了
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)
接着,创建一个新文档并调用该方法会导致非nil指针,但它并没有指向正确的文档,而是指向第一个文档:
Just created this new document: <MyDocument: 0x100437e10>
I'm in a view controller and current document is <MyDocument: 0x10040ff10>
请注意,在第二个文档创建后,currentDocument
指向的是第一个文档而不是第二个文档。
我这里缺少什么或者做错了什么?NSDocumentController
何时设置 currentDocument
?