Skip to content
tezvyn:

iOS & Swift

SwiftUI, UIKit, Xcode, Swift language, Apple platforms

160 bites

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

Intermediate everything in iOS & Swift

easy1 min read

Rosetta ends for Intel-only Mac apps at macOS 27 as Apple sets a hard deadline

Apple is winding down Rosetta, the translation layer that let Intel-only Mac apps run on Apple silicon since 2020. From macOS 26.4, users launching non-native apps may see an update notification, and macOS 27 is the last release that runs them at all, except older unmaintained games.

intermediate1 min read

XCFrameworks and Binary Distribution Trade-offs

XCFramework bundles slices for multiple platforms/architectures, used to hide source or speed builds.

intermediate1 min read

Decoupled Cross-Module Navigation in Modular iOS

Depend on a shared abstraction, register concrete routers in a coordinator or registry, resolve at runtime.

intermediate1 min read

Resolving Conflicting Transitive Versions in SPM

SPM allows only one version per package, so diagnose the graph, then update, pin, or fork to find an overlap.

intermediate1 min read

Making a Legacy UIViewController Testable

Extract logic into a testable view model, inject dependencies, keep the controller a thin humble object.

intermediate1 min read

setUp() and tearDown() in XCTestCase

SetUp builds fresh state before each test, tearDown cleans up after, ensuring independence.

intermediate1 min read

Generating Video Thumbnails with AVAssetImageGenerator

Load AVAsset, configure AVAssetImageGenerator, request the time off the main thread, hop back to update UI.

intermediate1 min read

Building a Card Flip Animation in SwiftUI

Drive a flipped state, rotate both faces with rotation3DEffect, hide the back face.

intermediate1 min read

Push vs Modal Presentation in UIKit

Push adds to a nav stack with back, modal presents a self-contained interrupting flow.

intermediate1 min read

IBOutlet vs IBAction in Interface Builder

Outlet references a view, action handles an event, both connect via Ctrl-drag.

intermediate2 min read

Protocols with associated types and opaque types

A PAT leaves a placeholder type unresolved, so it has no single concrete shape and historically could not be used as a bare existential; opaque types with some let you return one fixed underlying conforming…

intermediate1 min read

do-try-catch versus Optional return types

Throwing functions with do/try/catch convey why something failed via typed Error values; Optionals only say success or absence. Use throws when the caller needs the reason.

intermediate2 min read

Closures and trailing closure syntax

Closures are self-contained function blocks that capture surrounding state; a final closure parameter can be passed as a trailing closure outside the parentheses.

intermediate1 min read

Purpose of the guard statement

Guard requires its condition to hold or else exits the scope, and unwrapped optionals stay in scope afterward; this flattens nesting versus if.

intermediate1 min read

Retain cycles and how to break them

A cycle is two objects (or a closure and its owner) holding mutual strong references so neither deallocates; break it with a [weak] or [unowned] capture list.

intermediate1 min read

Decoding a heterogeneous JSON array by a type field

Peek the type field with a partial decode, switch on it, and decode the concrete type, wrapping each in an enum or boxed protocol value.

intermediate1 min read

Minimizing Storyboard merge conflicts

Split into many small storyboards or xibs, or move to programmatic or SwiftUI layout; process-wise coordinate ownership and merge often.

intermediate2 min read

Faulting in Core Data

A fault is a placeholder object whose property data is not yet loaded; accessing a property fires the fault and fetches from the store, saving memory.

intermediate2 min read

View identity in SwiftUI and the .id() modifier

Identity links a view to its persistent state and transitions; structural identity comes from position, explicit identity from .id(); changing the id resets state and forces a new view.

intermediate1 min read

Copy-on-write and implementing it for a custom struct

CoW shares a buffer until mutation, deep-copying only when the buffer is non-unique; Array, Dictionary, Set, String use it; implement with a class storage box and isKnownUniquelyReferenced.

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