Image for post
Image for post
Photo by Amy Hirschi on Unsplash

It’s a New Year!

Perhaps you are looking for a new job, or are thinking about upgrading your developer self.

Why not use this quick list of Interview Questions and Answers?

Hand-picked and selected for 2021, these are the terms and questions that you need to know for your iOS dev role!

The List

app ID / bundle ID App ID identifies one or more Apps from a development team. Bundle ID uniquely identifies each App. AppID is local, BundleID is on Apple’s side.

Access control open, public, internal, fileprivate and private.

App states Not running, inactive, active, background and suspended. Not running — not launched, inactive is foreground but not receiving events (transitioning states), active is normal, background is executing code, suspended is in the background not executing code. …

The view coordinate system is really important

Image for post
Image for post
Photo by Tim Marshall on Unsplash

Difficulty: Beginner | Easy | Normal | Challenging


The View coordinate system

The Units and structs used

CGFloat: A floating point number used for graphics
CGPoint: A C struct containing two CGFloats
CGRect: A C struct with an origin and a size (both of which are representated as a CGSize). Can be initialised with CGRect(origin:, size:) or CGRect(x: 0, y: , width: , height: ) . The origin is represented as a CGPoint.
CGSize: A C struct with a width and height.

The origin

The origin of any particular view is in the upper-left hand…

Create it from Scratch in Swift, for fun!

Image for post
Image for post

This article is going to show you how to make a snowy App using Swift.

It is going to look like the following:

Overcome the main Swift limitation for protocol

Image for post
Image for post
Photo by Sebastian Herrmann on Unsplash

Protocol extensions to the rescue!

This article contains a real example for you that is used in production Apps. Don’t say I don’t spoil you (because I don’t).

Difficulty: Beginner | Easy | Normal | Challenging


  • Be able to produce a “Hello, World!” iOS application (guide HERE)
  • Use of extensions in Swift (guide HERE)
  • Use of protocols in Swift (Guide HERE)


Extensions: Extensions add new functionality to a class, struct, enum or protocol

The issue

When you use a function, or initialise a class you might well use default arguments.

This is incredibly useful, and I’ve used just such a feature when I’ve created a Network Manager, and this gives a rather handy example for the rest of this article. …

Handle Dependencies well!

Image for post
Image for post
Image by Mesh

Before we start

Difficulty: Beginner | Easy | Normal | Challenging
This article has been developed using Xcode 12.2, and Swift 5.3

Requires iOS13 and above for the implementation used to lock the view. The Repo is avaliable for download.


* You will be expected to be aware how to make a Single View Application in Swift.
* I have taken a programmatic approach to the interface, although this is unlikely to trip you up the guide is here
* This article uses Behaviour View Controllers
* This article uses my Network Library implementation

Keywords and Terminology:

Architecture: The base structure of a software development project UIViewController: A view controller is an intermediary between the views it manages and the data of your…

What are they, and where should they be used?

Image for post
Image for post
Photo by Jan Meeus @janmeeus

Before we start

Difficulty: Beginner | Easy | Normal | Challenging
This article has been developed using Xcode 12.2, and Swift 5.3


Keywords and Terminology

Tuple: A way in Swift to allow you to store multiple values in a single variable Zip: Creates a sequence of pairs created from two underlying sequences

This article


You may have needed to join two different Arrays into one (same ordered) collection like in the LeetCode 211 constant.

This article explains what is going on! …

This can be hard

Image for post
Image for post

The background

There are number of prefix sum problems on LeetCode, and they tend to either be Medium or Hard problems. Is there a way this can be reasonably explained and coded?

Let us have a go!

The problem

Given aan array of Int nums, and an integer k calculate the number of continuous subarrays whose sum equals the integer k.

Continuous means that there cannot be a gap in the subarray.

The explanation

It is possible to create a memo using a dictionary to make our answer as efficient as possible (since a dictionary can be accessed in O(n)).

Drag and drop

Image for post
Image for post
Photo by Eugene Chystiakov on Unsplash

The interaction between user and App is extremely important. This extends from the look and feel of the application right to the touch gestures that make the user’s interactions delightful.

In order to make the application respond to these gestures you will need UIGestureRecognizer, and this tutorial should help you out in doing so.

Difficulty: Beginner | Easy | Normal | Challenging



UIGestureRecogniser: The base class for gesture recognisers, which include tap and pinch recognisers

The end result

This isn’t going to be pretty. You’re going to see some squares moving around an App according to whether the user drags, drops, pinches or rotates. Thomas Was Alone doesn’t have anything on this stuff! …

Implementing the UITableView without a Storyboard

Image for post
Image for post
Image of the completed project

This is a project that will help us to create a list of names as an iOS application, without the use of Storyboards. This article has been developed using Xcode 12.2, and Swift 5.3

If you would rather have a video tutorial of this please do see the following rather natty embedded video: if not you can read on!

Create a New Project

Use Xcode’s menu to create a new project, making sure to choose Swift as the language and using UIKit. Here is a detailed guide covering the same ground

Removing the Storyboard

Select Main.storyboard and delete it from the project inspector Remove Main from the Main Interface part of the general tab (this can be selected by selecting the project name at the top-left of the Project Inspector) and then select and delete Main there. …

No Specialist Knowledge Required

Image for post
Image for post
Photo by Sean O. @seantookthese

This article is about the 4 challenges in the LeetCode Weekly Contest 217. That is it!

1672 Richest Customer Wealth
1673 Find the Most Competitive Subsequence
1674 Minimum Moves to Mkae Array Complementary
1675 Minimize Deviation in Array

The solutions may assume some knowledge of Big O notation

The Problems

Each problem will be approached in turn, with a solution and also with articles explaining the tools, techniques and theory that will help you solve these problems yourself.

Let us get started!

1672 Richest Customer Wealth

Accounts are given as a two-dimensional grid accounts[i][j] where the row represents the customer:


Steven Curtis

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store