Как отключить восстановление окна?

Я использую 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") ;
}

Проблема в том, что когда я пытаюсь в своем приложении создать новый документ, окно не отображается.

Как правильно деактивировать восстановление окна?


person Colas    schedule 07.10.2013    source источник
comment
Это только для целей тестирования? Если это так, есть лучший способ сделать это, не связанный с вашим кодом.   -  person Peter Hosey    schedule 07.10.2013
comment
Эта функция восстановления окна делает мое приложение недоступным для запуска, например, после сбоя (или я нажимаю «Стоп» в xcode). Я не хочу, чтобы пользователи моего приложения сталкивались с той же проблемой и больше не могли запускать приложение. Поэтому я хочу отключить эту функцию. Но, если у вас есть лучше, это здорово!   -  person Colas    schedule 07.10.2013
comment
Это должно быть правдой только в том случае, если ваше сохраненное состояние повреждено или вы изменили ключи, под которыми вы его храните. В обычных обстоятельствах восстановление состояния существует для сохранения пользовательских данных (которые они не сохранили вручную) в случае сбоя — ваши пользователи захотят, чтобы они были на месте, когда у них произойдет сбой приложения. В целях отладки вы можете отключить восстановление состояния в своей схеме Xcode: i.stack.imgur.com/ zQAR4.png   -  person Peter Hosey    schedule 07.10.2013
comment
@PeterHosey, вы можете добавить свой комментарий в качестве ответа, если хотите!   -  person Colas    schedule 24.01.2014


Ответы (2)


Эта функция восстановления окна делает мое приложение недоступным для запуска, например, после сбоя (или я нажимаю «Стоп» в xcode). Я не хочу, чтобы пользователи моего приложения сталкивались с той же проблемой и больше не могли запускать приложение.

Это должно быть правдой только в том случае, если ваше сохраненное состояние повреждено или вы изменили ключи, под которыми вы его храните.

В обычных обстоятельствах восстановление состояния существует для сохранения пользовательских данных (которые они не сохранили вручную) в случае сбоя — ваши пользователи захотят, чтобы они были на месте, когда приложение аварийно завершает работу.

В целях отладки вы можете отключить восстановление состояния в схеме Xcode:

В редакторе схем Xcode 4 для команды

person Peter Hosey    schedule 24.01.2014

Следующее работает, но я должен признать, что я не знаю, почему именно !!

-(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] ;
}
person Colas    schedule 07.10.2013