Предотвращение повторного открытия документов после сбоя приложения на основе NSDocument - PullRequest
0 голосов
/ 11 сентября 2018

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

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

Документация Apple по NSDocument не содержит ничего относительно повторного открытия файлов, поэтому мне не повезло.Есть ли правильный способ сделать это?

1 Ответ

0 голосов
/ 13 сентября 2018

Сначала создайте подкласс NSDocumentController и убедитесь, что вы создали его экземпляр в - (void)applicationWillFinishLaunching:(NSNotification *)notification, чтобы он стал sharedDocumentController. (см. этот вопрос )

Тогда в вашем подклассе переопределите метод восстановления:

+ (void)restoreWindowWithIdentifier:(NSString *)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandler
{
    if (_preventDocumentRestoration) { // you need to decide when this var is true
        completionHandler(nil, [NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]);
    }
    else {
        [super restoreWindowWithIdentifier:identifier state:state completionHandler:completionHandler];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...