Skip to content

Latest commit

 

History

History
59 lines (50 loc) · 4.01 KB

ios.md

File metadata and controls

59 lines (50 loc) · 4.01 KB

iOS

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

Beginning iOS

You 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

You should be able to

  • Create and manage Core Data objects and schemas.
  • Decide when to best use a category vs subclassing
  • Decide when to best use Singletons.
  • Decide when to best use Delegates.
  • Decide when to best use Proxies.
  • Decide when to best use 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.