Как автоматически создать новый NSDocument, если документы не восстановлены?

РЕДАКТИРОВАТЬ: Кажется, что проблема ниже только возникает (скорее, не происходит...:), когда я запускаю изнутри Xcode (я на 4.4), а не из Finder. Это ошибка XCode, или я что-то упустил?

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

Шаги для воссоздания моей проблемы: если я создаю новое основанное на документе приложение в XCode и запускаю его, то при первом запуске оно действительно создает документ без названия. Но если я закрою этот документ, выйду из приложения и снова запустю его, он не даст мне новый документ, если я не нажму на значок приложения в Dock. Это отличается от, например, TextEdit, где, если вы выходите и перезапускаетесь, вы получаете новый пустой документ. (Изменение идентификатора пакета дает мне еще один новый документ без названия, как и ожидалось.)

Моей первой мыслью было, что, возможно, это должно произойти в applicationDidFinishLaunching:, но оказывается, что этот метод выполняется до восстановления любых ранее открытых документов.

1 ответ

Такое поведение является частью архитектуры документа. Ваше приложение-делегат должно реализовать следующий метод протокола NSApplicationDelegate

- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender;
{
    return YES;
}

Вы найдете больше об этом здесь.

Другие вопросы по тегам