Auto Save and Versions in Mac OS X 10.7 Lion -...
Transcript of Auto Save and Versions in Mac OS X 10.7 Lion -...
![Page 1: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/1.jpg)
These are confidential sessions—please refrain from streaming, blogging, or taking pictures
Session 107
Auto Save and Versions in Mac OS X 10.7 Lion
Tony ParkerSoftware Engineer, Cocoa Frameworks
1
![Page 2: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/2.jpg)
Agenda
iCloudVersionsAuto Save
2
![Page 3: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/3.jpg)
NSDocument
3
![Page 4: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/4.jpg)
Document-Based Application Basics
4
![Page 5: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/5.jpg)
Document-Based Applications
5
![Page 6: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/6.jpg)
NSDocument Features
6
![Page 7: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/7.jpg)
NSDocument Features
7
![Page 8: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/8.jpg)
NSDocument Features
• Edited state with undo integration• Safe save• Error presentation
8
![Page 9: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/9.jpg)
NSDocument Features
• Sandboxing support• File coordination• Duplication• Auto Save• Versions• Cloud document storage
9
![Page 10: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/10.jpg)
Document Application Architecture
• NSDocumentController• NSWindowController• NSDocument
10
![Page 11: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/11.jpg)
NSDocumentController
• Create, open, track, and manage documents+ (id)sharedDocumentController;
- (NSArray *)documents;
- (IBAction)newDocument:(id)sender;
- (void)openDocumentWithContentsOfURL:(NSURL *)url display:(BOOL)displayDocument completionHandler:(void (^)(NSDocument *document, BOOL documentWasOpen, NSError *error))handler;
11
![Page 12: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/12.jpg)
NSWindowController
• Manage one window associated with a document• Typically customized by subclassing- (id)initWithWindowNibName:(NSString *)windowNibName owner:(id)owner;
- (id)document;
12
![Page 13: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/13.jpg)
NSDocument
• Represent, store, and load persistent data• Always subclassed- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError;
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError;
- (IBAction)saveDocument:(id)sender;
- (NSURL *)fileURL;
- (BOOL)isDocumentEdited;
13
![Page 14: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/14.jpg)
NSDocumentController
MyRTFDocument
MyRTFWindowController
MyPlainTextDocument
MyWindowController MyWindowController
Document Application Architecture
14
![Page 15: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/15.jpg)
-openDocument:
-openDocumentWithContentsOfURL:display:error:
-typeForContentsOfURL:error:
-makeDocumentWithContentsOfURL:ofType:error:
NSD
ocumentController
-URLsFromRunningOpenPanel:
MyRTFD
ocument
Opening a Document
15
![Page 16: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/16.jpg)
-initWithContentsOfURL:ofType:error:
-addDocument:
-makeWindowControllers:
-showWindows:
-showWindow:
NSD
ocumentController
-readFromURL:ofType:error:
-readFromData:ofType:error:MyRTFD
ocument
MyRTFW
indowController
-initWithWindowNibName: owner:
-readFromFileWrapper:ofType:error:or
16
![Page 17: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/17.jpg)
-saveDocument:
-saveToURL:ofType:forSaveOperation:completionHandler:
-writeSafelyToURL:ofType:forSaveOperation:error:
-writeToURL:ofType:forSaveOperation:originalContentsURL:error:
-writeToURL:ofType:error:
-dataOfType:error:
More custom
More for free-fileWrapperOfType:error:
MyRTFD
ocument
or
Saving a Document
17
![Page 18: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/18.jpg)
Auto Save
18
![Page 19: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/19.jpg)
19
![Page 20: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/20.jpg)
Auto Save
• Saves automatically at key times• Frees user from worry of data loss• Relieves user of manual and repetitive task
• Document on disk is document on screen
20
![Page 21: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/21.jpg)
Enabling Auto Save
@implementation MyDocument
+ (BOOL)autosavesInPlace { return YES; }
@end
21
![Page 22: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/22.jpg)
Demo
Kevin PerrySoftware Engineer, Cocoa Frameworks
22
![Page 23: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/23.jpg)
Polishing Auto Save User Experience
• Be smart about when to save• Allow the user to cancel a save • Save on background threads
23
![Page 24: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/24.jpg)
Polishing Auto Save User ExperienceBe smart about when to save
• NSDocument triggers autosave• Quit• Document close• Switching applications• Timer• Reverting• Your application can also trigger autosave
24
![Page 25: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/25.jpg)
Taking Advantage of File Coordination Pacific HeightsTuesday 4:30PM
File CoordinationSaving and loading on demand
• Serializes access to files between applications• NSDocument implements it for you
■ Autosaves when read is requested■ Notifies when write is completed
25
![Page 26: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/26.jpg)
Polishing Auto Save User ExperienceSpend less time saving
• Saves now happen more frequently• Avoid interrupting the user• Only save what’s changed
■ Use NSFileWrapper■ Resources are stored in natural format■ Allows quick copies
26
![Page 27: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/27.jpg)
Polishing Auto Save User ExperienceAvoid interrupting the user
• Two kinds of autosaving• Normal
■ Application quit■ Document close■ Too long since last save
• Implicitly cancellable■ Timer
27
![Page 28: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/28.jpg)
Canceling Saving
- (BOOL)writeToURL:(NSURL *)url ofType:(NSString *)type error:(NSError **)err { while (stillSaving) { // Do some work if ([self autosavingIsImplicitlyCancellable] && checkForUserActivity()) { // Abort save if (err) *err = [NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]; return NO; } }}
28
![Page 29: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/29.jpg)
Polishing Auto Save User ExperienceEnable asynchronous saving
@implementation MyDocument
- (BOOL)canAsynchronouslyWriteToURL:(NSURL *)url ofType:(NSString *)type forSaveOperation:(NSSaveOperationType)op { return YES; }
@end
29
![Page 30: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/30.jpg)
Edit
Timer… Prepare Write Finish
EditWait
…now!
Synchronous Autosaving
30
![Page 31: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/31.jpg)
Asynchronous Autosaving
Edit
Timer… Prepare Write Finish
EditWait
…now!
31
![Page 32: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/32.jpg)
Asynchronous SavingUse background threads
• Save operation starts on main thread-saveToURL:ofType:forSaveOperation:completionHandler:
• Main thread blocks• Saving started on background thread-writeSafelyToURL:ofType:forSaveOperation:error:
• Background thread allows main thread to continue after snapshot-unblockUserInteraction
• Background thread finishes saving
32
![Page 33: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/33.jpg)
Serialized Resources
User Activities
SaveRevert
DuplicatePrint
File Access
URLModification dateOn-disk contents
Edit state
33
![Page 34: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/34.jpg)
Asynchronous SavingCoordinating threads during save
• Main thread needs to present something to the user
- (void)performActivityWithSynchronousWaiting:(BOOL)waitSynchronously usingBlock: (void (^)(void (^activityCompletionHandler)(void)))block;
• Any thread needs to access the document file
- (void)performSynchronousFileAccessUsingBlock:(void (^)(void))block;
- (void)performAsynchronousFileAccessUsingBlock: (void (^)(void (^fileAccessCompletionHandler)(void)))block;
34
![Page 35: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/35.jpg)
Asynchronous File Access Example
main thread
Save completion handler
Perform background workEnd asynchronous file access
Start background operationAsynchronous file access
35
![Page 36: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/36.jpg)
Asynchronous SavingAvoiding deadlock
• User activities and file access must be coordinated• Use NSDocument methods- (void)continueAsynchronousWorkOnMainThreadUsingBlock:(void (^)(void))block;
- (void)continueActivityUsingBlock:(void (^)(void))block;
• Example■ After save, calculate file size■ Display to user in inspector panel
36
![Page 37: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/37.jpg)
Calculate File Size
main thread
Save completion handler
Calculate file size
Start background operationAsynchronous file access
Run on main thread
Duplicate
Synchronous file access
… …
…
37
![Page 38: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/38.jpg)
Calculate File Size
main thread
Save completion handler
Calculate file size
Start background operationAsynchronous file access
Continue asynchronous work on main thread
Duplicate
Synchronous file access
End asynchronous file access
Update user interface
Finish duplicateEnd synchronous file access
38
![Page 39: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/39.jpg)
Demo
Kevin PerrySoftware Engineer, Cocoa Frameworks
39
![Page 40: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/40.jpg)
Time to user responsivenessPerformance Gains from Unblocking Early
Time the main thread spends blocked during autosave of Sketch document with 10,000 shapes. MacBook Pro, 2.8 GHz Core 2 Duo, 4 GB RAM.
Synchronous
Asynchronous
Copy and Unblock
.676 sec
.649 sec
.011 sec
40
![Page 41: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/41.jpg)
Versions
41
![Page 42: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/42.jpg)
42
![Page 43: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/43.jpg)
Versions Browser
• Expands revert options■ Further back in time■ Selective reverting
• Protects against unintentional change
• Compressed storage• Automatically manages versions• Integrated with Time Machine
43
![Page 44: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/44.jpg)
Polishing Versions User Experience
• Adopt asynchronous document opening• Show only relevant controls in Versions browser• Resize windows to best viewing dimensions• Allow discardable changes
44
![Page 45: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/45.jpg)
Polishing Versions User ExperienceShow different interface for versions
• Provide focused interface, including hiding toolbars and inspectors• Notifications are posted on version browser enter and exitNSWindowWillEnterVersionBrowserNotification
NSWindowDidExitVersionBrowserNotification
45
![Page 46: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/46.jpg)
Show different interface for versions
• Document displayed in version browser-(BOOL)isInViewingMode;
Polishing Versions User Experience
46
![Page 47: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/47.jpg)
Polishing Versions User ExperienceMake document window the best size
• NSWindowDelegate method- (NSSize)window:(NSWindow *)window willResizeForVersionBrowserWithMaxPreferredSize:(NSSize)prefSize maxAllowedSize:(NSSize)allowedSize;
Screen size
Max allowed size
Max preferred size
47
![Page 48: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/48.jpg)
Polishing Versions User ExperienceAllow some changes to viewing mode documents
• Changes to viewing mode documents are automatically undone• To allow, the change must be discardable
■ Normally autosaved■ May be discarded on locked or viewing mode documents
• Examples■ Expanded or hidden state of slide group in Keynote■ Currently displayed chart in Numbers
48
![Page 49: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/49.jpg)
Polishing Versions User ExperienceAllow some changes to viewing mode versions
• Use via NSUndoManager[myUndoManager setActionIsDiscardable:YES];
• Or via NSDocument[myDocument updateChangeCount: NSChangeDone | NSChangeDiscardable];
49
![Page 50: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/50.jpg)
NSFileVersion
• Foundation-level access to versions without NSDocument• Caller responsible for file coordination and version management
50
![Page 51: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/51.jpg)
NSFileVersion
• Get an array of NSFileVersion instances for a file+ (NSArray *)otherVersionsOfItemAtURL:(NSURL *)url;
• Add a new version of a file to Versions+ (NSFileVersion *)addVersionOfItemAtURL:(NSURL *)url withContentsOfURL:(NSURL *)contentsURL options:(NSFileVersionAddingOptions)options error:(NSError **)outError;
51
![Page 52: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/52.jpg)
NSFileVersion
• Revert to an old version of a file- (NSURL *)replaceItemAtURL:(NSURL *)url options:(NSFileVersionReplacingOptions)options error:(NSError **)error;
• Properties of an NSFileVersion■ URL■ Name and modification date■ Discardability
52
![Page 53: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/53.jpg)
Demo
Kevin PerrySoftware Engineer, Cocoa Frameworks
53
![Page 54: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/54.jpg)
iCloud
54
![Page 55: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/55.jpg)
Cloud Storage
• NSDocument will use Versions to resolve conflicts
• File coordination will update contents when needed
• Move document to cloud• Find documents in cloud
55
![Page 56: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/56.jpg)
Moving a Document to iCloud
• Use NSFileManager• Find container- (NSURL *)URLForUbiquityContainerIdentifier:(NSString *)identifier;
• Make document ubiquitous- (BOOL)setUbiquitous:(BOOL)flag itemAtURL:(NSURL *)url destinationURL:(NSURL *)destinationURL error:(NSError **)error;
56
![Page 57: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/57.jpg)
Finding iCloud Documents
• Use NSMetadataQuery• New search scope NSMetadataQueryUbiquitousDocumentsScope
• NSURL propertiesNSURLIsUbiquitousItemKey
NSURLUbiquitousItemIsDownloadedKey / NSURLUbiquitousItemIsDownloadingKey
NSURLUbiquitousItemPercentDownloadedKey
NSURLUbiquitousItemIsUploadedKey / NSURLUbiquitousItemIsUploadingKey
NSURLUbiquitousItemPercentUploadedKey
57
![Page 58: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/58.jpg)
Demo
Kevin PerrySoftware Engineer, Cocoa Frameworks
58
![Page 59: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/59.jpg)
What We LearnedMake your document-based app a first-class Lion citizen
• Auto Save■ + (BOOL)autosavesInPlace { return YES; }■ Polish by saving fast and adopting async saving
• Versions■ Polish by streamlining interface in browsing mode and allowing discardable changes
• iCloud■ Moving documents to cloud, finding documents in cloud■ Cloud document properties
59
![Page 60: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/60.jpg)
More Information
Bill DudneyApplication Frameworks [email protected]
DocumentationMac OS X Dev Centerhttp://developer.apple.com/devcenter/mac
Apple Developer Forumshttp://devforums.apple.com
NSDocument header files87% comments!
60
![Page 61: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/61.jpg)
Taking Advantage of File Coordination Pacific HeightsTuesday 4:30PM
Resume and Automatic Termination in Lion MarinaThursday 9:00AM
Related Sessions
61
![Page 62: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/62.jpg)
Cocoa Lab App Frameworks Lab ATuesday 2:00-6:00PM
Cocoa and Autolayout Lab App Frameworks Lab AWednesday 9:00-11:15AM
Cocoa, Full Screen, and Aqua Lab App Frameworks Lab AWednesday 2:00-6:00PM
Cocoa, Auto Save, File Coordination, and Resume Lab App Frameworks Lab AThursday 2:00-4:15PM
Labs
62
![Page 63: Auto Save and Versions in Mac OS X 10.7 Lion - Huihoodocs.huihoo.com/apple/wwdc/2011/session_107__autosave_and_versions...Auto Save and Versions in Mac OS X 10.7 ... File Coordination,](https://reader030.fdocuments.in/reader030/viewer/2022021503/5af8ab937f8b9a44658cb0e9/html5/thumbnails/63.jpg)
63