Course APP103
Cocoa Programming
Course Overview
Cocoa Programming
The emphasis on this course is on programming. The course commences with a detailed overivew of Objective-C 2.0 and the Foundation Framework. The early GUI examples are developed programmatically, outside of Interface Builder so as to provide a feel for the framework and its constituent parts, and an understanding of serialisation. As well as developing proficiency in working with XCode and Interface Builder attendees will learn how to design effective event driven user interface based applications including:
- Implementing code for drawing and animation
- Laying out and managing user interface widgets such as buttons, text fields, sliders and scoll bars
- Kanipulate table views
- Persist (save) application state and user data
- Connect to interface objects both by using Interface Builder and by direct programming
Prerequisites
Introduction to Objective-C Programming course, or equivalent knowledge.
Course Contents
Basic Concepts of Object-Oriented Analysis and Design
Overview of the Cocoa framework architecture
Mastering the XCode IDE (Integrated Development Environment)
- creating and building projects
- running and debugging applications
- working with the class and documentation browsers
Intensive overview of ObjectiveC
- dynamic typing
- dynamic binding
- dynamic loading
The Runtime System
- dynamic method lookup
- resolution of unmatched selectors
- message forwarding
Dynamic Properties
- use of @property to declare accessor methods
- use of @synthesize to synthesize accessor methods
Categories and Protocols
Foundation Framework
- delegation
- key-value coding
- mutable subclasses
Files and URLs
- storage and retrieval of filesystems and web data
Memory Management
- reference counting
- garbage collection
- autorelease pools
Property lists and Key-Value pair coding idioms
Application Class and the App Delegate
- window server and the main event loop
- managing main window and key window status
- methods implemented by the delegate
- application configuration
Windows and Panels
- Writing code to create and manage windows
- window delegate methods
Menus and Submenus
- creating and modifying
- adding and removing menu items dynamically
Views and Responders
- handling mouse and keyboard events
- drawing to the screen
- View hierarchies
- implementing custom drawing functionality
Animation
- the core animation layers
- layer backed views
- custom animation
Controls and cells
- action methods and the targe-action idiom
- grid layout of buttons and text fields
String - object conversion
Formatters
- built in formatter classes
- creating custom formatter classes
Understanding object oriented patterns
- Model View Controller pattern
- Composite pattern
- Visitor pattern
Cocoa bindings
- model-view synchronisation
- the key-value observing protocol
- NSController hierarchy
- NSEditor hierarchy
- customising binding behaviour
Data persistence and object-relational mappings
- data modeling
- persistence stores
Text handling
- rich text formats
- cutting, copying, pasting
Data sources and Table Views
Interface Builder
- .nib and .xib files
- archiving and unarchiving of objects
- file ownership
- outlets and actions
- NSBundle
- dynamic loading of .nib files
