2013-10-07 76 views
1

我正在使用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

這只是用於測試目的?如果是這樣,有一個更好的方法可以做到這一點,而不會涉及到你的代碼。 –

+0

此窗口恢復功能使我的應用程序無法啓動,例如在崩潰後(或者在'xcode'中單擊停止)。我不希望我的應用用戶面對同樣的問題,無法再啓動應用。因此,我想停用此功能。但是,如果你更好,那太棒了! – Colas

+1

只有當您的存儲狀態損壞或者您更改了存儲在其中的密鑰時,纔會出現這種情況。在正常情況下,狀態恢復是爲了在發生崩潰時保存用戶數據(它們沒有手動保存) - 當應用程序崩潰時,用戶會希望它保留在那裏。出於調試的目的,你可以在你的Xcode方案中禁用狀態恢復:http://i.stack.imgur.com/zQAR4.png –

回答

3

窗口恢復此功能使我的應用程序unlaunchable,例如在系統崩潰後(或我單擊停止在Xcode)。我不希望我的應用用戶面對同樣的問題,無法再啓動應用。

這應該只是如果你的存儲狀態損壞或你已經改變了你存儲它的鍵。

在正常情況下,狀態恢復的存在是爲了保存用戶數據(即他們沒有手動保存)在的情況下崩潰,您的用戶將它在那裏當對他們的應用程序崩潰。

出於調試目的,您可以在您的Xcode方案禁用狀態恢復:

In Xcode 4's scheme editor, for the Run verb, on the Options tab, check the 「Launch application without state restoration」 checkbox.

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] ; 
}