Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (50 sloc) 4.09 KB


Critical Learning


You know everyday Objective-C and iOS development when you can:

  • Use Xcode (and the built-in Interface Builder) to compile an iOS app.
  • Describe and use ARC and MRC for memory mangement, as well as the rules of the retain/release/autorelease cycle.
  • Use the basic data types (NSInteger, NSString), collection objects (NSArray, NSDictionary), and know when to use them instead of C primitives (int, char, etc).
  • Understand the difference between using tne mutable (NSMutableArray, NSMutableDictionary, NSMutableString) and immutable objects in Objective-C, their advantaces and disavantages.
  • Use the basic display and navigation elements (UIWindow, UIView, UINavigationBar, UIToolbar, etc).
  • Implement a solution using an UITableView, with navigation and a custom UITableViewCell.
  • Implement the various iOS controls (UISwitch, UILabel, UISegmentedControl, etc).
  • Understand and implement the usage of iPad specific UI controls, UIPopoverController and UISplitView.
  • Design and use basic design patterns like MVC, delegates, callbacks, and notifications.
  • Use CoreLocation to get location coordinates.
  • Access the cameras to take pictures or access pictures from the device's photo gallery.
  • Implement network communications using AFNetworking or NSUrlConnection.
  • Implement UX and design best practices as prescribed by Apple.
  • Meet App Store submission requirements and submit an app.

You know advanced Objective-C & iOS Development when you can:

  • Create and manage Core Data objects and schemas.
  • Decide when to best use:
    • A category vs subclassing.
    • Singletons.
    • Delegates.
    • Proxies.
    • Closures.
  • Implement animations using CoreAnimation and optimize drawing using CoreGraphics.
  • Implement a multi-tasking environment free of race conditions (using appropriate locking techniques such as mutexes and semaphores, message passing, etc)
  • Implement task driven concurrency using the Grand Central Dispatch (GCD) framework.
  • Design and use APIs that prefer the use of closures instead of selectors and delegates.
  • Create and use UIStoryboards to define and organize the application flow and transitions between screens.
  • Debug memory leaks using NSZombieEnabled, Instruments, and other tools.
  • Use CocoaPods to define your project's dependencies.
  • Create an universal app that contains code for both the iPhone/iPod and iPad devices.

Ongoing reference

Jump to Line
Something went wrong with that request. Please try again.