我的应用程序观察其document
的NSWindowController
属性,并在设置时执行一些UI设置。一旦设置,由于更改,很难重建UI(由于内部原因)。
一旦NSWindowController
将其document
属性设置为打开的文档,系统在什么条件下将该属性更改为新的NSDocument
实例(即文档是否会被换出)?我从来没有观察过它,但我可以想象版本或iCloud同步等功能导致窗口控制器的文档被换成新文档。但是,关于NSWindowController
生命周期的文档似乎没有涉及到这个问题。
一旦设置它就不会改变。 NSWindowController通过addWindowController
方法获取其文档。每个新的/打开的文档都会创建自己的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];
}
}