NSWindowController 的文档在什么情况下可以更改?

Under what conditions can an NSWindowController's document change?

我的应用程序观察其 NSWindowControllerdocument 属性 并在设置时执行一些 UI 设置。设置后,由于更改将很难重建 UI(出于内部原因)。

一旦 NSWindowController 将其 document 属性 设置为打开的文档,在什么情况下系统会 更改 属性 到一个新的 NSDocument 实例(即文档是否会被换出)?我从来没有观察到它发生,但我可以想象版本或 iCloud 同步等功能导致 window 控制器的文档被交换为新文档。但是,NSWindowController 生命周期的文档似乎没有涉及这个问题。

一旦设置就不会改变。 NSWindowController 通过 addWindowController 方法获取其文档。每个 new/opened 文档都会创建自己的 windowController。文档实例不会随 iCloud 或 revertChanges 而改变。如何使文档与其视图同步(重绘)取决于您。

/* Create the user interface for this document, but don't show it yet. 
The default implementation of this method invokes [self windowNibName], 
creates a new window controller using the resulting nib name (if it is not nil), 
specifying this document as the nib file's owner, and then invokes [self addWindowController:theNewWindowController] to attach it. You can override 
this method to use a custom subclass of NSWindowController or to create more 
than one window controller right away. NSDocumentController invokes this method 
when creating or opening new documents.
*/


// e.g. override 
- (void)makeWindowControllers
{
    if ([[self windowControllers] count] == 0) {
        MainWindowController *controller = [[MainWindowController alloc] init];
        [self addWindowController:controller];
    }
}