building a modern mac os x app
TRANSCRIPT
![Page 1: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/1.jpg)
Building a Modern Mac OS X AppScott Stevenson
![Page 2: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/2.jpg)
The Deal
80% Solution
Point you in the right direction
Give some practical starting points
You research as it applies to your app
Some sample code to work with
![Page 3: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/3.jpg)
The Basics
![Page 4: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/4.jpg)
Layers of a Mac OS X App
data
architecture
behavior
appearance
![Page 5: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/5.jpg)
The Basics
Take advantage of the frameworks: 82!
Good UI is essential, not a “nice to have”
Use highest-possible abstractions
In features, less is more
Essential features out in open
Secondary features discoverable
Be gutsy
![Page 6: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/6.jpg)
Specific Examples
Objective-C Frameworks
Core Data
Cocoa Bindings
QuickTime Kit
PDF Kit
WebKit
Core Image
![Page 7: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/7.jpg)
Design
User Experience can be the tiebreaker
A fresh approach can redefine a category
Good design exposes functionality
Functionality becomes part of workflow
Establish a long-term relationship
![Page 8: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/8.jpg)
Little Things
![Page 9: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/9.jpg)
Leopard
![Page 10: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/10.jpg)
Key Points for Leopard
Objective-C 2.0
View Improvements
Model and Controller Improvements
User Interface
System Integration: Services, Artwork
New and Updated Tools
Future: 64-bit and High Resolution
![Page 11: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/11.jpg)
Objective-C 2.0
Properties
Dot Syntax
Loops
Synthesized Properties
Garbage Collection
![Page 12: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/12.jpg)
View Improvements
Layer Backing
See if new views fit your needs
PDF Kit
ImageKit
![Page 13: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/13.jpg)
Model Improvements
Data Migration
NSRuleEditor + NSPredicateEditor
NSAtomicStore
Fetch Requests
NSManagedObjects with @dynamic
![Page 14: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/14.jpg)
User Interface
Drawers are gone. Source Lists
Unified Look: contentBorderThickness
Subtle animations. Use carefully
New buttons styles: Simple Gradients
Fuzzy: Less rigid look
![Page 15: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/15.jpg)
System Integration
Calendar Store
QuickLook
Spotlight
Large Icons
iChat Theatre
![Page 16: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/16.jpg)
Standard Artwork
+[NSImage imageNamed]
NSImageNameAddTemplate
NSImageNameRemoveTemplate
NSImageNameStopProgressTemplate
NSImageNameBonjour
NSImageNameDotMac
NSImageNameComputer
NSImageNameFolderSmart
NSImageNameNetwork
![Page 17: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/17.jpg)
New and Updated Tools
Xcode
Refactoring
Snapshots
IB3 Integration
Interface Builder 3: Complete Revamp
Dashcode
Instruments
![Page 18: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/18.jpg)
Future: 64-bit and High Resolution
NSInteger
NSUInteger
CGFloat
Carbon UI
QuickTime
![Page 19: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/19.jpg)
Wrap Up
![Page 20: Building a Modern Mac OS X App](https://reader031.vdocuments.site/reader031/viewer/2022020702/61fb24aa2e268c58cd5aa81e/html5/thumbnails/20.jpg)
Take Home Points
Use the frameworks
Design is not an afterthought
Start with highest-level abstractions
Start with something simple
Be gutsy and have fun