syllabus

iOS Development

Introduction

1Introduction

Welcome to the world of Apple’s mobile platform, you must be here to learn about the basics of iOS development. Here we will give you a guide to learn the process from the ground all the way to an experienced developer. With time and dedication, you can make it happen on your own, just make sure not to give it up before the finish line.

Nowadays, in the time of cloud computing, it’s easy to start learning even without a single Apple device. Back in the day, when Objective-C was the only way to code for iPhone, it was thought difficult to learn even the basics of iOS development.

No Resources

Check the other sections in this syllabus to find more resources!

Prerequisites

2Prerequisites

Swift

At 2014 Apple introduced its new general-purpose, multi-paradigm, compiled programming language called Swift. It’s an alternative to the Objective-C language that employs modern programming-language theory concepts and strives to present a simpler syntax. During its introduction, it was described simply as “Objective-C without the C”. After version 3.0, we kinda say it’s production ready, it’s excellent for learning proposes and in-house apps, but not always sufficient for enormous corporate products on it’s own.

For learning the basics of Swift language, you will only need a browser and the IBM Swift Sandbox where you can get familiar with the syntax and more

Xcode

8Xcode

Apple’s integrated development environment aka IDE. It’s only available on the Mac App Store for free and include the tools, compilers and frameworks for iOS, tvOS, watchOS and macOS development.

Interface Builder

Xcode has an integrated XML Interface Builder to visually edit iOS, watchOS, tvOS and macOS interfaces stored as XIBs/NIBs and Storyboard files. Simply drag and drop windows, buttons, text fields, and other objects onto the design canvas to create a functioning user interface without writing any code. If you’re confused on some of the terminology, don’t worry! Click on the resources below this section, which will take you into the wonderful world of xCode.

User Interface

9User Interface

View Controllers

The user interface will be built by static and dynamic elements. The simple elements like UILabel, UIButton, UITextfield, UITextView, UIScrollView, etc are mostly not reuseable by their own and made to present static elements, while UITableView and UICollectionView is built in mind to present reusable content efficiently. They can handle 1000 of cells and items with high performance if you fulfill some simple rules. You can find an article about smooth scrolling in the resources.

The interface is based on a Model-View-Controller design pattern, where the interface can be built using the Interface Builder without any code. Then you can connect and add the code for its corresponding view controller.

Storing User Data

9Storing User Data

Saving Data

Most of the time you need to store at least a few small details about your user, like a name, a password, a session token or a Boolean value about a fired tutorial screen. While other times you need to maintain a whole bunch of data in a complex database, or just save same draft images to the disk.

Saving Data to Shared User Defaults

The simplest way to save non-critical user data is to store in the user defaults. It’s just like a dictionary, a static collection of key-value pairs. Have you ever find some hidden toggles for an iOS app in the settings? Those values are also stored here for sure.

Notifications

9Notifications

Local Notifications

Sometimes you need to remind the user once or twice at a specific time. You can make this by secluding some local notifications which can also be repeated in specific time periods.

Push Notifications

Other times notifications triggered by remote events, like other users, or the developer tries to reach you with some information. These push notifications can contain new data and could even wake your app for a small period to fetch new information.

Libraries & Community

5Libraries & Community

Cocoa Controls

By using open source UI components, wrappers or frameworks, you can save a ton of time, therefore you can spend more time to make your app awesome. Don’t hesitate to use as many as you like. Find the most awesome ones in the resources.

CocoaPods

It’s a dependency manager for Swift and Objective-C Cocoa projects. It has over 30 thousand libraries and is used in over 1.9 million apps. CocoaPods can help you scale your projects elegantly.

Distributing Your App

4Distributing Your App

Apple Developer Program

Once you finished your first app, you may want to distribute it to testers or to the world, right? For both you need to enroll to the Apple Developer Program, which will cost you 100$ a year. With a paid developer account, you can access all the latest beta software and can distribute to iPhone, iPad, Mac, Apple Watch, and Apple TV.

Archiving your App

To create a distributable iOS application archive aka IPA, you need to setup your code signing properly and archive your product with Xcode. The archive will contain all of your code and resources (images, fonts etc.) in one bundle. You can find your previous archives as well as your new archive in the Organizer window, where you can upload, export or validate it.

What’s Next?

6What’s Next?

Speed up development

After a while, you will notice that hall of your coding spend on setting up tableview for a signup form or for some dynamic data. Well, you can speed this up by making a few template Storyboards, but there must be a better way, right? Well there is, and one of the best solution is using eureka which is an elegant iOS form builder written in Swift, with built in solution for all the most popular tableview usages.

Reactive Programming

“ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming”.

Laszlo Tuss
MENTOR
Freelancer iOS developer. With more than 5 years of experience in iOS Development, started with Objective-C and without ARC, all the way to Swift, watchOS and tvOS. Now I’m trying to build my client base while working on in-house projects. Feel free to contact me with any questions and good luck with your learning. BMC logoBuy me a coffee