У меня есть простое приложение для Mac OS X, Cocoa, Document, которое использует новые API 10.7 Autosave, Versions and Asychronous Saving.Я полностью использую API NSDocument
, чтобы бесплатно получить все функции приложений Apple для работы с документами.
Для поддержки нового автосохранения Lion / Versions / AsyncSaving я переопределил следующие методы в моем NSDocument
подкласс выглядит так:
@implementation MyDocument
...
+ (BOOL)autosavesInPlace { return YES; }
- (BOOL)canAsynchronouslyWriteToURL:(NSURL *)URL ofType:(NSString *)type forSaveOperation:(NSSaveOperationType)op {
return YES;
}
Я также переопределил -dataOfType:error:
, чтобы помочь реализовать сохранение данных документа на диск:
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outErr {
NSData *data = nil;
if ([typeName isEqualToString:MY_SUPPORTED_TYPE_NAME]) {
data = makeSnapshotCopyOfMyDocumentData(); // assume return value is autoreleased
} else if (outErr) {
*outErr = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:nil];
}
// not sure this is doing much good, since i take no action after this.
[self unblockUserInteraction];
return data;
}
...
@end
Посмотрите, как я звоню -unblockUserInteraction
в конце концов?
При поддержке новой функции AsyncSaving 10.7 Apple рекомендует вызывать -unblockUserInteraction
как можно раньше (после создания моментальной копии данных вашего документа) в вашей реализации -dataOfType:error:
.Но пример Apple показал, что они выполняют гораздо больше работы после вызова -unblockUserInteraction
.
Однако, учитывая то, что после этого я не предпринимаю никаких других действий, мне интересно, есть ли смысл вообще там звонить -unblockUserInteraction
.
Итак, мои вопросы:
Учитывая, что после этого я не предпринял никаких других действий, мой призыв к -unblockUserInteraction
приносит пользу?
Apple Frameworks просто вызывает -unblockUserInteraction
сразу после того, как -dataOfType:error:
все равно возвращается?Должен ли я просто оставить это им?