Autosaving, Revert/Duplicate, and -writeSafelyToURL:
Autosaving, Revert/Duplicate, and -writeSafelyToURL:
- Subject: Autosaving, Revert/Duplicate, and -writeSafelyToURL:
- From: Kyle Sluder <email@hidden>
- Date: Mon, 22 Aug 2011 14:21:04 -0700
Hi all,
No formal documentation yet exists for the new NSDocument autosave
path. Well, really paths, because "autosave" actually refers to two
related but different things:
- The old-style periodic autosaving that is done to protect against crashing.
- The new behavior where the document is saved at certain key
intervals, including application quit.
Sussing out the new scheme has been straightforward, if time
consuming. I've built a pretty complicated OmniGraffle diagram that
describes the new world order: http://db.tt/gP2zi7j
But I just encountered something in the AppKit release notes that has
thrown me for a bit of a loop. In the section "Things to Watch For
When Enabling NSDocument Autosaving in Place" is the following
paragraph:
> • Overriding the various -write… methods
>
> During duplicating and reverting NSDocument may cause the current version of the document, the one the user is looking at at that moment, to be preserved. Doing this sometimes requires that the document's current contents be written to disk. NSDocument does not invoke any of the -save… methods in that case. Instead, it invokes -writeSafelyToURL:ofType:forSaveOperation:error:, passing it a URL to a file that will become the preserved version, the file type that [self autosavingFileType] returns, and NSAutosaveElsewhereOperation. Your NSDocument subclass must write the entire contents of the document to that file. You will probably not notice this if you are not overriding -writeSafelyToURL:ofType:forSaveOperation:error:, you are correctly overriding one of the simple writing methods, which are -writeToURL:ofType:error:, -fileWrapperOfType:error:, and -dataOfType:error:, and if -autosavingFileType always returns an appropriate value.
According to my diagram, new-style autosaves, explicit Cmd-S saves,
and periodic crash-protection autosaves all funnel through
-saveToURL:ofType:forSaveOperation:completionHandler:. Why doesn't
NSDocument also use this method for saving and reverting? Or does it?
--Kyle Sluder
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden