我正在研究我的第一个基于Mac文档的应用程序.
我已经进行了子类化NSDocument,重新实现了诸如的方法
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError;
- (void)makeWindowControllers;
Run Code Online (Sandbox Code Playgroud)
主窗口控制器是一个子类NSWindowsController,包含两个NSViewController子类.
我面临的问题是我需要从这些视图控制器访问当前文档.我所做的就是打电话
MyDocument *myDocument = [[NSDocumentController sharedController] currentDocument];
Run Code Online (Sandbox Code Playgroud)
首先,在启动应用程序后,立即创建一个新文档.然后,创建主窗口及其视图控制器,但上面的方法返回nil.这是我得到的日志(使用NSLog):
Just created this new document: <MyDocument: 0x10040ff10>
I'm in a view controller and current document is (null)
Run Code Online (Sandbox Code Playgroud)
之后,创建一个新文档并调用此方法会产生一个非零指针,但它不会指向正确的文档,而是指向第一个:
Just created this new document: <MyDocument: 0x100437e10>
I'm in a view controller and current document is <MyDocument: 0x10040ff10>
Run Code Online (Sandbox Code Playgroud)
请注意,在创建第二个文档后,currentDocument指向第一个文档而不是第二个文档.
知道我错过了什么或做错了吗?什么时候currentDocument设置NSDocumentController …