in Android, Updates

iOS 101 for Android Developers – AnDevCon Boston 2015

by Stephen Barnes (@smbarne), Fitbit iOS Engineer

Sample Project used in talk:


By learning iOS and coming over to the dark side, you can learn from the iOS app, and also help do a quick implementation of a feature you already implemented on Android.

Start Developing iOS Apps Today tutorial

Hamburger menu on Android, not on iOS.

UINavigationController to Push/Pop UIViewControllers
* Use this by default for nested content

Other Extensions
* Custom Keyboards
* Photo/Media Editing
* Storage Provider
* Document picker

Swift 2.0 was announced for iOS9 and Xcode 7.

App Store approval can take up to 2 weeks. On Android, it’s up within 12 hours.

Project Structure
* Swift uses modules
* Note: Objective-C has no namespacing so use class prefixes (recommended to be at least 3 characters, and not something like “FB”)
info.plist is required and similar to AndroidManifest.xml n Android
* No build.gradlew. All build info in *.xcodeproj

Asset Bundles:
* There are 3 buckets. Just @1x, @2x, and 3x
* The iPhone 6 is the first device to have @3x and a non-1:1 or 2:1 pixel ratio.

UIViewControllers <-> Activities (UI Building Blocks)
Fundamental view-management model for all iOS apps.

iOS is strongly architected around the MVC framework.

Fragments don’t exist on iOS, and this sort of concept doesn’t really exist.  You could do it if you use the Child View Controller Containment, but it’s not recommended unless you have significant iOS experience since this is not a common patter.
ListFragment would be done with a UITableViewController on iOS.

Closures are Apple’s Lambda implementation blocks.  These are similar to anonymous functions or AsyncTasks

Main View Components

  • PagerAdapter or NavigationDrawer -> UITabBar
  • ListView -> UITableView
  • GridView -> UICollectionView

iOS Interface Builder is your friend.  AutoLayout is almost a must.

Storyboards are powerful and worthwhile.

Core Data is a ORM with some pluses and minuses.  Designed to be easy to use and reliable.  It is the defacto way to do persistent data as it also has migrations, etc.  Contains grouping, filtering and organizing data in memory and in the UI.

Equivalent libraries:

  • AFNetworking <-> Volley
  • MagicalRecord <-> ActiveAndroid
  • SDWebImage <-> Picasso