This is a short cheat sheet that Icreated 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 JetBrainsin 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
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.
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:
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
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.
Have to point out, creating layouts can be done programatically (constrains / anchors / stacks), which is much more advance than any interface builder by achieving reusability and scalability. (Plus real developer/engineer don’t program by mouse.)
Hi there! Would you mind if I share your blog with my myspace group? There’s a lot of folks that I think would really enjoy your content. Please let me know. Many thanks|
Very good article sir
Great and very useful article, thanks!
I’d just like to point out that the equivalent to Android’s “multi-line scrollable EditText” would really be UITextView, not EditText.
Thanks Jonathan, right, it should be TextView. I just updated it
Great article, minor correction on Libraries you mistyped Gradle instead of Glide.
Thanks Lucas. I think that I fixed it yesterday. Maybe it wasn’t updated properly. I will recheck it.
Have to point out, creating layouts can be done programatically (constrains / anchors / stacks), which is much more advance than any interface builder by achieving reusability and scalability. (Plus real developer/engineer don’t program by mouse.)
Thanks, Eisen. Right, I thought that it was covered by ‘and Swift’ but I should probably add a clarifying note.
Hi there! Would you mind if I share your blog with my myspace group? There’s a lot of folks that I think would really enjoy your content. Please let me know. Many thanks|
Appreciate this post. Will try it out.|
Hi there, I enjoy reading all of your article post. I wanted to write a little comment to support you.|