On Aug 24, 2013, at 06:15 , Markus Spoettl <ms_li...@shiftoption.com> wrote:

> It seems no matter what I do, I can't get incremental saving to work. The 
> more sub-wrappers my package wrapper contains, the longer it takes for the 
> document to get saved. It doesn't matter how many sub-wrappers actually 
> changed, the time it takes to save increases with the number of wrappers.
> 
> The documentation in UIDocument's 
> -writeContents:toURL:forSaveOperation:originalContentsURL:error: helpfully 
> states that if one wants incremental saving, one has to implement it there. I 
> took that to mean that UIDocument's use of NSFileWrapper doesn't support 
> incremental saving for some reason.

The file wrapper optimization is not, AFAIK, regarded as incremental saving, 
though the intended effect is of course somewhat similar.

> So I went and implemented my own -writeContents::::: that essentially calls 
> the root package wrapper's -writeToURL:options:originalURL:error:. This 
> method's documentation states that it implements incremental saving by using 
> hard links for unchanged content. Still, the performance is unchanged 
> compared to UIDocument's own implementation.

What file wrapper are you returning from 'contentsForType:error:'? Are you 
constructing it there? If so, that might explain why all the files are being 
re-written.

Normally, you'd keep track of the file wrapper originally passed to 
'loadFromContents:ofType:error:', and return *that* at save time, after 
replacing the sub-wrappers for any files that have changed. Using that 
approach, I've never run into a problem with the hard-linking optimization for 
unchanged files.

_______________________________________________

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

Reply via email to