Learn ralph small Learn

iOS

The mobile operating system that runs on the iPhone, iPad, iPod touch, and Apple TV.

Contribute to this list

Create an account or sign in to save your progess

Beginning iOS

Use these additional resources for reference and additional practice

Beginning iOS developers should be able to

  • Use Xcode (and the built-in Interface Builder) to compile an iOS app.
  • Use the basic data types (NSInteger, NSString), collection objects (NSArray, NSDictionary), and know when to use them instead of C primitives (int, char, etc).
  • Design and use basic design patterns like MVC, delegates, callbacks, and notifications.
  • Understand the difference between using the mutable (NSMutableArray, NSMutableDictionary, NSMutableString) and immutable objects in Objective-C, their advantages and disadvantages.
  • Describe and use ARC and MRC for memory management, as well as the rules of the retain/release/autorelease cycle.
  • 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.
  • Implement network communications using AFNetworking or NSURLConnection.
  • Use CoreLocation to get location coordinates.
  • Access the cameras to take pictures or access pictures from the device's photo gallery.
  • Implement UX and design best practices as prescribed by Apple.
  • Meet App Store submission requirements and submit an app.

Advanced iOS

Use these additional resources for reference and additional practice

Advanced iOS developers should be able to

  • 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