我的应用观察其document
的{{1}}属性,并在设置后执行一些UI设置。设置完成后,由于更改,将很难重建UI(由于内部原因)。
一旦NSWindowController
将其NSWindowController
属性设置为打开的文档,系统将在什么条件下将该属性更改为新的document
实例(即文件是否会被换出)?我从未观察到它的发生,但是我可以想象诸如版本或iCloud同步之类的功能会导致窗口控制器的文档被替换为新文档。但是,关于NSDocument
生命周期的文档似乎与这个问题无关。
答案 0 :(得分:2)
设置后不会更改。 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];
}
}