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, page 6

Navigating Apple's App Store Submission and Review
intermediate2 min read

Navigating Apple's App Store Submission and Review

Think of App Store submission as a strict gatekeeping process, not just an upload. You must prove your app is safe, reliable, and transparent via App Store Connect.

intermediate2 min read

TestFlight: Apple's Beta Testing Framework

TestFlight is your private App Store for beta builds. Use it to distribute pre-release versions to internal teams and external testers for feedback before a public launch. The footgun: external tester builds require a beta App Review, unlike internal builds.

Swift Package Resources: Bundling Assets with Code
intermediate2 min read

Swift Package Resources: Bundling Assets with Code

A Swift Package resource bundle is like a fanny pack for your code, letting you package assets like images and data files directly with your library. This makes your package self-contained.

intermediate2 min read

Carthage: A Decentralized iOS Dependency Manager

Carthage is a dependency manager that prioritizes developer control. It compiles dependencies into binary frameworks but leaves final integration to you, avoiding automatic changes to your Xcode project.

Framework Target
intermediate2 min read

Framework Target

A Framework target in Xcode builds a reusable bundle of compiled code and public interfaces, separate from an app target, so an app, a widget, or an extension can share the same code without duplicating it.

Xcode Workspaces: Managing Multiple Related Projects
intermediate2 min read

Xcode Workspaces: Managing Multiple Related Projects

An Xcode Workspace is a container for multiple related projects, letting them share code and resources. Use it when building an app with its own frameworks or when managing dependencies like CocoaPods.

Xcode Code Coverage: Measuring Test Effectiveness
intermediate2 min read

Xcode Code Coverage: Measuring Test Effectiveness

Code coverage isn't a grade, but a map of untested code. Use it in Xcode to find gaps in your logic before shipping. The footgun: high coverage doesn't mean your tests are good, just that the lines were executed, potentially missing key assertions.

Testing Async Code with XCTestExpectation
intermediate2 min read

Testing Async Code with XCTestExpectation

XCTestExpectation is a stopwatch for your tests, pausing them to wait for asynchronous work like a network call to finish. Use it for testing code with completion handlers. The footgun is forgetting to fulfill() the expectation, causing a timeout failure.

XCUIElementQuery: The Blueprint for Finding UI Elements
intermediate2 min read

XCUIElementQuery: The Blueprint for Finding UI Elements

An XCUIElementQuery is a recipe for finding UI, not the element itself. It describes a search that runs only when you interact with the result. Use it in XCUITest to locate views for automated tests. The footgun: thinking a query finds an element on creation.

XCUITest: Automating Your App's User Interface
intermediate1 min read

XCUITest: Automating Your App's User Interface

XCUITest is like a robot user for your app, tapping buttons and verifying what's on screen. It automates testing of critical flows like login or checkout to prevent regressions.

Mocking: Faking Dependencies in Unit Tests
intermediate2 min read

Mocking: Faking Dependencies in Unit Tests

A mock is a stunt double for a real object in your unit tests, letting you control its behavior. Use it to fake dependencies like network clients for fast, predictable tests. The footgun: over-mocking can create tests that pass but miss real integration bugs.

intermediate2 min read

Test-Driven Development: Write the Test First

TDD flips the script: write a failing test before the feature code, forcing a testable design. It's ideal for new Swift components with clear requirements, ensuring every line of code serves a purpose.

iOS Geofencing: Your App's Virtual Fence
intermediate2 min read

iOS Geofencing: Your App's Virtual Fence

Geofencing sets a virtual perimeter and lets iOS wake your app when a user enters or exits, without constant tracking. Use it for location-based reminders or context-aware features.

HealthKit: The Secure Vault for User Health Data
intermediate2 min read

HealthKit: The Secure Vault for User Health Data

HealthKit is a secure, centralized database for user health data, not a sensor. Your app requests permission to read or write data like steps or workouts, which the OS manages. The footgun is assuming access; users grant permissions per data type.

StoreKit
intermediate1 min read

StoreKit

StoreKit is Apple's framework for in-app purchases and subscriptions. It manages product lookup, presenting the payment sheet, processing transactions, and restoring purchases, so apps never touch raw payment data directly.

Vision Framework: Computer Vision on Apple Devices
intermediate2 min read

Vision Framework: Computer Vision on Apple Devices

The Vision framework is your on-device toolkit for understanding images and video. Use it for face detection, text recognition, or barcode scanning without needing ML expertise. Footgun: don't run requests on every frame; it drains the battery.

Core ML: On-Device Machine Learning for Apple Apps
intermediate2 min read

Core ML: On-Device Machine Learning for Apple Apps

Core ML runs pre-trained machine learning models directly on Apple devices, enabling fast, private, and offline AI. It's used for features like real-time image recognition or text analysis. The footgun: Core ML only runs models; it doesn't train them.

Canvas in SwiftUI
intermediate2 min read

Canvas in SwiftUI

Canvas is SwiftUI's view for fast, immediate mode drawing. Instead of composing many shape views, you draw paths, text, and images directly into a GraphicsContext, which is far cheaper for complex or animated graphics.

Creating Custom Gestures by Subclassing UIGestureRecognizer
intermediate2 min read

Creating Custom Gestures by Subclassing UIGestureRecognizer

Subclassing UIGestureRecognizer lets you build a custom state machine for touch events. Use it for unique interactions like a rotary dial. The footgun is state management: you must explicitly update the gesture's state or it will never be recognized.

CAShapeLayer: Hardware-Accelerated Vector Drawing
intermediate2 min read

CAShapeLayer: Hardware-Accelerated Vector Drawing

A CAShapeLayer is a GPU-powered stencil for drawing vector shapes. It renders paths like lines and curves far more efficiently than drawing in draw(_:). Use it for custom UI like progress rings.

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