В приложении на основе документов любое изменение в документе сигнализируется
[self updateChangeCount: NSChangeDone];
В любой момент при отладке [document isEdited]
возвращает TRUE, поскольку документ был отредактирован. Окно документа отображает «Изменено» помимо названия документа. Когда я закрываю приложение, мой представитель приложения просматривает все открытые документы и проверяет, были ли они отредактированы или нет, используя этот цикл:
NSUInteger needsSaving = 0;
while (count--) {
NSWindow *window = [windows objectAtIndex:count];
Document *document = [Document documentForWindow:window];
if (document && [document isDocumentEdited]) needsSaving++;
}
Похоже, что для любого документа - модифицированного или нет -
[document isDocumentEdited];
всегда возвращает FALSE! Так что процесс проверки / изменения не может быть вызван. Если я проверяю [window isDocumentEdited]
, он также возвращает FALSE, несмотря на тот факт, что «Modified» записывается в строке заголовка окна.
Когда приложения закрываются, изменения в конечном итоге сохраняются (автоматически), но без уведомления пользователя. Это очень тревожное поведение!
Любая идея о том, что может объяснить, что логическое значение isDocumentEdited
сбрасывается в ЛОЖЬ где-то перед входом в этот процесс?
Я проверил весь код, чтобы убедиться, что не было [self updateChangeCount: NSChangeCleared]
, которое можно было бы где-то запустить, но это не тот случай. Я могу обойти проблему, используя пользовательскую систему подсчета updateChange в моем подклассе Document, но я бы предпочел использовать встроенный процесс.
Использование Xcode 10 под Mojave с целью 10,12