On-Site Training

    Your Developers
    Your Location
    Our Instructors
    & Courseware
    Focused Training
    Just For Your Team!


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 5
    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.
  • MVC Design
    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
    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.
  • Bindings
    You'll learn how to automatically link between models, views, and controllers using key-value coding and key-value observing.
  • Notifications
    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.
  • Blocks
    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.
  • Tables
    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.
  • Custom Views
    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.
  • Events
    You'll learn how to handle mouse and keyboard events in your app.
  • Networking
    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.
  • Concurrency
    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!”

Jeremy Vinding

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

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…”

Paul Crawford

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.