Skip to content
tezvyn:

iOS & Swift

SwiftUI, UIKit, Xcode, Swift language, Apple platforms

310 bites

Test yourself: Top 30 iOS & Swift interview questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Everything in iOS & Swift, page 16

The Result Type: Modeling Success and Failure
easy2 min read

The Result Type: Modeling Success and Failure

The Result type is a sealed box for an operation's outcome: it holds either a success value or a failure error. It's used in asynchronous code like network requests to create clean, explicit completion handlers. The footgun is forgetting to handle both cases.

easy2 min read

Value vs. Reference Semantics in Swift

Value types are like emailing a document copy; changes don't affect the original. Reference types are like a shared Google Doc link; everyone edits the same instance. In Swift, structs are copies, while classes are shared references.

advanced2 min read

async/await: Write Concurrent Code That Reads Synchronously

async/await lets you write asynchronous code that reads like a synchronous story, eliminating callback hell. It's ideal for network requests or file I/O. The footgun is thinking await blocks a thread; it only suspends the current task.

advanced2 min read

Automatic Reference Counting (ARC): Swift's Memory Manager

ARC is Swift's automatic memory manager for classes. It's like a landlord tracking tenants: when the last reference to an object is gone, its memory is freed. It's used everywhere in Swift, but the footgun is creating strong reference cycles.

advanced2 min read

Protocols: Swift's Blueprint for Behavior

Protocols are Swift's blueprints for behavior, enabling composition over inheritance. They're used to decouple dependencies and define shared functionality like Codable. The footgun is mistaking any Protocol for some Protocol, inviting performance costs.

intermediate2 min read

Swift Error Handling: Throwing, Catching, and Propagating

Swift error handling uses a dedicated channel for failures. Functions declare they can fail with throws, you handle them with do-catch, or transform them into optionals with try?. The footgun is overusing try!, which crashes your app on failure.

intermediate2 min read

Swift Structs vs. Classes: Value vs. Reference Types

In Swift, a struct is a copied value (like a new document), while a class is a shared reference (like a link to one document). Use structs for simple data like coordinates; use classes for shared state like a user session.

intermediate2 min read

Swift Optionals: Handling Nothing Safely

An Optional is like a box that might contain a value or might be empty (nil). You must safely unwrap it before using the value, preventing crashes. It's used for properties that might not exist yet or for function returns that can fail.

easy2 min read

Swift Control Flow: Directing Your Code's Path

Control flow statements are the traffic signals of your code. They use keywords like if, for, and switch to make decisions and repeat actions, rather than just running top-to-bottom. This is how you show a list of items or check if a user is logged.

easy2 min read

Variables and Constants in Swift

Swift has two ways to store a value: var declares a variable you can reassign later, and let declares a constant whose value is set once and can never change, and Swift's convention is to default to let unless you have a specific reason to need var.

We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.

See open roles