相关疑难解决方法(0)

NSDocumentController currentDocument返回nil

我正在研究我的第一个基于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 …

macos cocoa objective-c nsdocument

9
推荐指数
2
解决办法
2662
查看次数

标签 统计

cocoa ×1

macos ×1

nsdocument ×1

objective-c ×1