我使用的是SDK 10.8。
我正在对NSPersistentDocument
进行子类化(但问题可能会让人们感兴趣的是NSDocument
子类)并且我想停用窗口恢复。到目前为止,这就是我所做的:
-(void)restoreStateWithCoder:(NSCoder *)coder
{
NSLog(@"No 1") ;
}
-(void)restoreDocumentWindowWithIdentifier:(NSString *)identifier
state:(NSCoder *)state
completionHandler:(void (^)(NSWindow *, NSError *))completionHandler
{
NSLog(@"No 2") ;
}
问题在于,当我尝试在我的应用程序中创建新文档时,不会显示任何窗口。
停用窗口恢复的正确方法是什么?
答案 0 :(得分:3)
此窗口恢复功能使我的应用程序无法启用,例如在崩溃后(或我在xcode中单击停止)。我不希望我的应用的用户遇到同样的问题,也无法再启动该应用。
只有当您的存储状态损坏或者您更改了存储它的密钥时,才会出现这种情况。
在正常情况下,存在状态恢复以在发生崩溃时保存用户数据(他们没有手动保存) - 当应用程序崩溃时,您的用户将想要它在那里它们。
出于调试目的,您可以在Xcode方案中禁用状态恢复:
答案 1 :(得分:0)
以下作品,但我必须承认,我不知道为什么!
-(void)restoreDocumentWindowWithIdentifier:(NSString *)identifier
state:(NSCoder *)state
completionHandler:(void (^)(NSWindow *, NSError *))completionHandler
{
DDLogWarn(@"Method 'restoreDocumentWindowWithIdentifier...' overidden") ;
[[NSDocumentController sharedDocumentController] newDocument:nil] ;
}
- (void)restoreStateWithCoder:(NSCoder *)coder
{
DDLogWarn(@"Method 'restoreStateWithCoder...' overidden") ;
[[NSDocumentController sharedDocumentController] newDocument:nil] ;
}