【发布时间】:2012-01-18 15:02:23
【问题描述】:
我正在开发我的第一个基于 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?
【问题讨论】:
-
正确语法:'[NSDocumentController sharedDocumentController]'
标签: objective-c macos cocoa nsdocument