我正在處理我的第一個基於文檔的Mac應用程序。NSDocumentController currentDocument返回零
我已經子類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];
首先,在啓動應用程序之後,創建一個新文檔。然後,創建主窗口及其視圖控制器,但上述方法返回無。這裏的日誌(使用的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
?
謝謝,但我已經試過,我仍然得到零結果。我也不確定蘋果公司的「非主動」意味着什麼,但在我的情況下,它恰好在啓動應用程序後發生。沒有拖放,沒有什麼特別的。 – msoler