Objective-C has been Apple’s language of choice for iOS App development since the iPhone first arrived on the scene in 2007. With well over a million apps available for purchase written in Objective-C, its importance and relevance remain crucial for any development team.

This three-day course will provide a thorough exploration of object-oriented programming with Objective-C through a myriad of hands-on labs and exercises that will cover both the theoretical and practical aspects of the language. Topics covered will include Objective-C data types, working with collection objects, control-flow, creating custom classes, inheritance, polymorphism, dynamic binding and dynamic typing, the foundation framework, working with the iOS File System and much more.

An in-depth exploration of Xcode – Apple’s IDE for developing iOS Apps – will also be an integral part of this class. Students will use it to write a myriad of programs that demonstrate the concepts being taught.

Students will have gained a solid foundation and understanding of how Objective-C works, a strong familiarity with the Xcode IDE, and thus be ideally prepared to move on to learning iOS app development.

Audience: Beginner programmers as well as experienced programmers who are not familiar with Objective-C.
Course Duration: 3 days

Previous programming experience is recommended but not mandatory. Basic familiarity with Mac computers and working in Mac OS X is recommended.

Hardware and Software Requirements:
  • Mac computers running OS X 10.10 (“Yosemite”) or greater. An iOS device is optional
  • Xcode 7.0 (free download at: https://developer.apple.com/xcode)
  • A projector with mini-HDMI adapter for the instructor
Course Objectives:
  • Learn to use building blocks of programming, including variables, conditionals and loops
  • Understand how to use Fast Enumeration and how to work with collection objects such as NSArrays, NSDictionaries and NSSets
  • Create custom classes; write instance and class methods
  • Understand object-oriented messaging, inheritance, polymorphism, dynamic binding and dynamic typing
  • Learn to use the Foundation Framework’s classes and data structures: NSString, NSNumber, NSDate, etc.
  • Declare struts and enums
  • Write full-fledged Objective-C programs
Course Outline:
  • Creating and Running an Objective-C Project in Xcode
    • Xcode IDE Overview
    • Building and Testing Programs the Workflow


  • Working with Data Types, Variables and Constants
    • Declaring Variables, Performing Basic Operations
    • Primitive Data Types: Ints, Floats, Doubles, Bools, Chars
    • Strings – Literals, Mutability, Concatenation
    • Logging Variable Values and String Literals to Xcode’s Console
    • Type Casting


  • Arithmetics and Expressions
    • Addition, Subtraction, Multiplication, Division, Modulus
    • Operator Precedence
    • Assignment and Comparison Operators
    • Type Conversions Through Mixed Operations
    • Introduction to the Math Library and Its Functions


  • Control-Flow
    • Conditionals
      • IF and Ternary Statements
      • Compound Relationals
      • The Switch Statement
      • Nested Conditionals
    • Loops
      • FOR Loops, FOR-Condition-Increment
      • WHILE Loops, DO-WHILE loops
      • Loop Control Statements: Continue, Break


  • Creating Custom Classes
    • Declaring a Custom Class Using @interface
    • Implementing a Custom Class Using @implementation
    • Declaring Instance Variables and Instance Methods
    • Creating Synthesized Accessor (Getter/Setter) Methods
    • Instantiating Objects from Classes
    • Sending Messages to Objects and Setting Object Properties


  • Inheritance
    • Base Classes, Creating Subclasses
    • Overriding Methods and Properties
    • Using Self
    • Extension Through Inheritance


  • Polymorphism, Dynamic Typing and Dynamic Binding
    • Same Method Names, Different Classes
    • Static Typing
    • Dynamic Typing and Dynamic Binding
    • Run-Time Querying of Objects and Classes
    • Working with the ID Type


  • The Foundation Framework and Collection Objects
    • The NSNumber Class
    • Working with NSString and NSMutableString
    • Working with NSArrays and NSMutableArrays
    • Working with NSDictionaries and NSMutableDictionaries
    • Working with NSSet and NSMutableSet
    • Fast Enumeration Over Collection Objects


  • Data Persistence and Working with iOS File System
    • Working with the NSFileManager Class
    • File-Paths and the NSURL Class
    • Reading, Writing and Copying Files
    • Working with Directories
    • Working with NSData and NSMutableData


  • Custom Data-Types, Protocols and Categories
    • Declaring and Working with Objective-C Structures
    • Declaring and Working with Objective-C Enums
    • Renaming Data-Types with Typdef
    • Extending Foundation Classes with Categories
    • Understanding and Creating Custom Protocols


  • Archiving and Copying Objects
    • Shallow vs. Deep Copying
    • The NSCopying Protocol
    • Archiving XML Property Lists
    • Creating Encoding and Decoding Methods
    • Working with NSKeyedArchiver