auto save and versions in mac os x 10.7 lion -...

63
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 Parker Software Engineer, Cocoa Frameworks 1

Upload: doandan

Post on 14-May-2018

251 views

Category:

Documents


0 download

TRANSCRIPT

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

-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,

-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,

-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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

63