Basic iOS Cheat Sheet for Android
Developers
This is a short cheat sheet that I created to improve communication in mobile development. As
Android reference I used Kotlin but it should be easy to understand for Java developers too.
Language differences
Objective C is the Java of iOS whereas Swift is very similar to Kotlin. Like Kotlin in Android,
Swift is a preferred language for new projects. Swift is a newer, modern language developed by
Apple to make life easier for developers. Despite that Objective C is still popular and according to
data from JetBrains in 2019, almost 50% of iOS developers still know Objective C.
Kotlin vs Swift
Here I covered Kotlin equivalents in Swift. Note that these equivalents are not identical,
usually have small differences.
Note that both Garbage Collection and ARC manage memory but work in completely different
ways.
Android iOS
null nil
val let
var var
let if let
this self
fun func
when switch
Map Dictionary
Nullable Optional
Jakub Chmiel jakubpchmiel.com
Android iOS
Pair, Triple, etc. Tuple
listener delegate
interface protocol
SQLite/Room Core Data
Garbage Collection Automatic Reference Counting
Framework differences
Lifecycle
Both Android and iOS Frameworks have a lifecycle. But in iOS, there are 2 important functions
that don’t exist.
onSaveInstanceState/onRestoreInstanceState -> doesn’t exist
onActivityResult -> doesn’t exist. You have to use Navigation Controller with delegates (listeners).
Also, note that it’s tough to compare lifecycles from Android and iOS. I think that more detailed
comparison deserves a separate article.
Android iOS
onCreate loadView (loading view manually)
onStart and onResume viewDidLoad
app running viewWillAppear
app running viewDidAppear
onPause and onStop viewWillDisappear
onDestroy viewDidUnload
Creating layouts
iOS is nothing like Android when it comes to layouts. In iOS, most of the layout oriented work is
done using a mouse (like in the ‘Design’ mode in Android Studio) and Swift. For layouts you can
use:
Jakub Chmiel jakubpchmiel.com
1. XIB (XML Interface Builder) files. An older way to create layouts but it’s not outdated. This
way every view layout has own XIB file.
2. Storyboards (one file with many views and navigation). Introduced in iOS 5. Manage many
views and their navigation in one file.
Build tools and libraries
Gradle’s equivalent is Cocoapods. The former one is a build tool used (not only) for Android apps
also used in IDEs other than Android Studio. The latter one is a tightly coupled to XCode IDE.
Android iOS
Android SDK Cocoa Touch
Gradle XCode Tools + Cocoapods
OkHttp AFNetworking/Alamofire/URLSession
Picasso/Glide SDWebImage/KingFisher
Timber CocoaLumberjack
RxJava/RxKotlin RxSwift/Bond
Retrofit Moya
GSON/Moshi SwiftyJSON/Codable
Spek Quick
View differences
Note that iOS doesn’t have ViewGroups because they are regular Views.
Android iOS
TextView Label
single-line EditText TextField
multi-line scrollable EditText TextView
Jakub Chmiel jakubpchmiel.com
Android iOS
simple RecyclerView TableView
customizable RecyclerView CollectionView
Popup menu Context menu
Bottom sheet Action menu
ViewPager PageViewController
Seek bar Slider
View.VISIBLE/View.INVISIBLE isHidden
View.GONE StackView or constraints
enabled userInteractionEnabled
Spinner PickerView
ProgressView ProgressView (also Spinner)
Summary
It’s good to know Android equivalents in iOS. Usually, it’s better to communicate using names
well known in programming, not only in your framework. But it’s not always possible or just
doesn’t happen.
Update: Check out r/androiddev Reddit discussion about this article which supplements it and
brings many good ideas.
Jakub Chmiel jakubpchmiel.com