Mac OS X Programming
with Daniel Steinberg
Learn how to develop native Mac apps in this 4-day, hands-on training course taught by a master Cocoa programmer.
The new Mac App Store presents a golden opportunity to developers. You can sell your Mac app through Apple and have it delivered via iTunes to potentially tens of millions of Mac users around the world. Indeed, it's a great time to become a Mac developer! If you're new to Mac development, or an iOS developer with an idea for a Mac app, then this course is for you.
- Gain hands-on experience with Objective-C, Cocoa, Xcode, and Interface Builder to build Mac apps like the pros.
- Take advantage of new features in Mac OS X, including blocks and Grand Central Dispatch.
- Complement your iPhone or iPad apps with a Mac app to give your users the best of both worlds.
- Save development time by focusing exclusively on Mac app development for four days with expert guidance.
You'll come away from this course knowing how to use Xcode 5, Objective-C, and Cocoa to create full-featured Mac apps. You'll also have a deeper understanding of the principles and patterns behind iOS app development.
What Will I Learn?
How to create native Mac apps from scratch. Through a series of lecture, hands-on exercises, and discussion, you'll learn the fundamentals of building Mac apps. Topics include:
Intro to Objective-C
Objective-C is the object-oriented programming language that you use to write Mac apps. You'll learn how to start writing Objective-C programs using classes, objects, properties, message sending, memory management, categories, protocols, and the Foundation classes (data types and collections).
Xcode is the IDE used for iOS development, and it's been completely redesigned in Xcode 5! You'll learn how to use it effectively, and learn various tricks of the trade to work more efficiently.
Good model-view-controller (MVC) design is critical to creating apps that are both maintainable and flexible. You'll learn how to design Mac apps — standard apps as well as document based apps — the Cocoa way.
Views and Their Controllers
Views represent the user interface of your app, and all the dynamic aspects of a view are handled by a view controller. View controllers are the hub of the model-view-controller (MVC) design. You'll learn how to design views in Nibs, and wire them up to view controllers with outlets and actions. You'll also get an introduction to some of Apple's own pre-built view controllers, which save you tons of work.
Delegates are pervasive throughout Cocoa. They allow you to add custom functionality to your app without subclassing. You'll learn how to use predefined delegates, and create your own, so you can effectively use a vast array of Cocoa classes.
KVC and KVO
Understanding key-value coding (KVC) and key-value observing (KVO) is a fundamental part of programming in Cocoa. KVC and KVO allows you to interact with your objects dynamically and react to changes in state. These two technologies set the stage for bindings.
You'll learn how to automatically link between models, views, and controllers using key-value coding and key-value observing.
Notifications let you keep track of changes in your app. You'll learn how to register, post, and handle notifications in your app to reduce unnecessary coupling. Standard, distributed, and user notifications are covered.
are a new powerful feature introduced in Snow Leopard. You'll learn how to use blocks to simplify your code and specify work to be done in place. Blocks are also useful for concurrency.
Table views are central to many Mac apps. You'll learn how to organize data in tables, insert and delete table data, and navigate between tables using navigation controllers. You'll use the new view-based table cells to create more visually interesting interfaces.
The default set of controls only takes you so far. Set your app apart from the crowd by creating custom views drawn with Core Graphics.
You'll learn how to handle mouse and keyboard events in your app.
Cocoa has a rich set of networking APIs. You'll learn how to interact with web services to extend the reach of your app.
Intro to Core Data
Core Data offers an elegant solution to data modeling and persistence. You'll learn how to get started managing, modeling, querying, and persisting app data using Core Data.
Make your app more responsive by learning to take advantage of Grand Central Dispatch using Operation Queues and Dispatch Queues.
Performance Tuning and Debugging
Learn how to use power tools, including Instruments and the Clang Static Analyzer, to detect memory leaks and profile the performance of your app.
“I learned a lot, and the instructors were both very knowledgeable and able to clearly explain complicated concepts. Well done!”
Who's It For?
Teams of five or more programmers. This course will be a good fit for your team if your developers:
- Are new to Mac app development, or they've started building a Mac app and need help putting all the pieces together
- Are looking to round out their iOS development skills with a deeper understanding of Objective-C and Cocoa
- Have a programming background in an object-oriented language such as Java, C#, Ruby, or Python. No prior experience with Objective-C or Cocoa is assumed. However, this course is not a good fit for folks who are new to programming in general.
Who Teaches the Course?
Daniel Steinberg is the author of Cocoa Programming: A Quick Start for Developers, iPad Programming, and Test Driving iOS Development with Kiwi. He writes feature articles for Apple's ADC web site and is a regular contributor to Mac Devcenter. He has presented at Apple's Worldwide Developer Conference, MacWorld, MacHack, CocoaConf, and other Mac developer conferences.
“I most liked the instructor's explanations and the ability to ask questions and interact…”
What Do I Need?
Since this course is taught on-site at your location, you'll need the following:
- a room to comfortably accommodate your team
- a laptop projector and screen
- a whiteboard (or flipchart) with markers
- laptops (or desktops) for each attendee running OS X Mavericks
Prior to the course, we'll provide instructions for installing all the required software, downloading the example code bundle, and other preparatory steps.