Interesting. When exactly should the copy be made? When subclassing UIDocument the usual methods (writeContents:... or similar) are already called on the separate thread. Can I dispatch making the copy on the main thread with dispatch_sync(dispatch_get_main_queue(), ...) ? Is that anywhere discussed in the documentation?
Mani Am 27.05.2012 um 22:49 schrieb Mike Abdullah: > The general idea is that you make some kind of copy of your model's state and > pass that as the document's "content", leaving the background free to write > it at its leisure. > > On 27 May 2012, at 21:35, Manfred Schwind wrote: > >> Hi, >> >> when using UIDocument, reading and writing the document is done >> asynchronously in a separate thread. But there's one thing I don't >> understand: how is that supposed to be used with non-thread-safe models? In >> my opinion most straight-forward implemented models are _not_ thread-safe. >> If you have the common case of a non-thread-safe model - is there an easy >> way to let UIDocument do reading/writing synchronously at the main thread? >> Or are we supposed to serialize every (!) modification of the model in a >> performAsynchronousFileAccessUsingBlock call? >> >> Initially reading the document (triggered by openWithCompletionHandler) is >> usually not a problem. The user can not work with the model before it has >> been loaded. The problems begin when writing the document: the document >> write methods are called asynchronously, so the model is accessed at this >> time, but the user can do things at the same time in parallel through the UI >> and modify the model at the same time as it is saved - a big source for >> unpredicted behaviour, data-loss, crashes ... >> >> The documentation for performAsynchronousFileAccessUsingBlock only mentions >> accessing the "document" (assuming this means the document's file?). But I >> think serializing the file access is not enough; accessing the "in-memory" >> model must also be serialized. Or did I miss something? >> >> Regards, >> Mani >> >> >> _______________________________________________ >> >> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >> >> Please do not post admin requests or moderator comments to the list. >> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >> >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/cocoa-dev/cocoadev%40mikeabdullah.net >> >> This email sent to cocoa...@mikeabdullah.net > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com