Cocoa Programming for Snow Leopard
with Daniel Steinberg
Learn how to build native applications for the Mac in this 4 day, hands-on training course taught by a master Cocoa programmer.
- Gain hands-on experience with Objective-C and Cocoa to build Mac applications just like the pros.
- Take advantage of new features in Snow Leopard (Mac OS X 10.6), including blocks and Grand Central Dispatch.
- Complement your iPhone or iPad apps with a Mac app to give your audience the best of both worlds.
- Save time by focusing exclusively on Cocoa development for three days with expert guidance.
You'll come away from this course ready to start creating applications for the Mac, with a deeper understanding of the principles and patterns behind iPhone/iPad apps. You'll know your way around the tools and understand how to use Objective-C and the Cocoa APIs to create full-featured Mac applications with less code.
“I learned a lot, and the instructors were both very knowledgeable and able to clearly explain complicated concepts. Well done!”
What Will I Learn?
How to create native Mac applications. Through a series of lecture, hands-on exercises, and discussion, you'll learn the fundamentals of building Cocoa applications. Topics include:
- Transitioning to Objective-C 2.0: 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 and Interface Builder: Xcode is the IDE used for Mac app development and Interface Builder is the visual tool for designing your app's user interface. You'll learn how to use both of them effectively, and learn various tricks of the trade to work more efficiently.
- MVC Design: Good model-view-controller (MVC) design is critical to creating applications that are both maintainable and flexible. You'll learn how to design Mac 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 application 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 application. You'll learn how to register, post, and handle notifications in your application to reduce unnecessary coupling.
- Blocks: Blocks are a new and powerful feature 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.
- Custom Views: The default set of controls only takes you so far. Set your application 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 application.
- Networking: Cocoa has a rich set of networking APIs. You'll learn how to interact with web services to extend the reach of your application.
- 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 application 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 liked that we spent a lot of time focusing on how IB interacts with the various aspects of Cocoa/ObjC, along with all the tips, shortcuts, and undocumented features.”
Who’s It For?
Programmers. This course is a good fit for you if...
- You're new to the Mac development platform or you're looking to round out your iPhone/iPad skills with a deeper understanding of Objective-C and Cocoa
- You have a programming background in an object-oriented language (Java, C#, Ruby, Python, etc.). No prior experience with Objective-C or Cocoa is assumed. However, this course is not a good fit for folks who are new to object-oriented programming in general.
Who Teaches the Course?
Daniel Steinberg is the author of the book Cocoa Programming: A Quick Start for Developers and the upcoming book iPad Programming. 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, and other Mac developer conferences.
“I most liked the instructor's explanations and the ability to ask questions and interact...”
What Do I Need?
This course is taught on site at your location. As such, 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) on which each attendee can complete the hands-on exercises, and access rights on those machines to install the required software
