1

不覆盖autosaveWithCompletionHandler:,每当文档更改时( [doc updateChangeCount: UIDocumentChangeDone]autosaveWithCompletionHandler:会定期调用。

但是如果我重写这个方法,它只会被调用一次。

文档已更改 -> 时间在流逝... -> 已调用重写方法 -> 文档已更改 -> 时间在流逝... -> 时间在流逝... -> 文档已更改 -> 时间正在过去... -> 时间在流逝...

我通过调用来更改文档[doc updateChangeCount: UIDocumentChangeDone]

(覆盖方法)

- (void) autosaveWithCompletionHandler: (void (^(BOOL success))completionHandler {                          

    if ([self hasUnsavedChanges]) {
        [self saveToURL: self.fileURL forSaveOperation: UIDocumentSaveForOverwriting completionHandler: ^(BOOL success) {
            if (success) {
                NSLog(@"%@ has been autosaved", [self description]);
                completionHandler(YES);
            }
            else {
                NSLog(@"Failed to autosave %@", [self description]);
                completionHandler(NO);
            }
        }];
    }
}   // autosaveWithCompletionHandler:

感谢您的阅读。

4

1 回答 1

0

你不应该压倒一切saveWithCompletionHandler:autosaveWithCompletionHandler:;这些方法对私有属性进行更改,这有助于系统确定对象是否需要保存,并且当您覆盖这些方法时,不会进行这些更改。相反,您应该覆盖contentsForType:error:.

于 2013-08-04T09:23:31.547 回答