Easy concepts in iOS & Swift, page 2

UserDefaults: Your App's Junk Drawer for Settings
UserDefaults is a simple key-value store for persisting small bits of data, like a dictionary that saves itself. Use it to remember user preferences like enabling dark mode or a username. The footgun: don't use it for large files or sensitive data.

App Sandbox: A Digital Playpen for Your App
The App Sandbox is a digital playpen for your app, restricting it to its own files and resources. It's a core security feature on iOS and macOS, preventing apps from accessing user data or system files without explicit permission.

FileManager: Your App's Interface to the File System
FileManager is your app's librarian for the file system. Instead of using raw paths, you ask it to find, create, or delete files and directories. Always handle potential errors, as file operations can easily fail.

Swift's Codable: Effortless JSON & Data Parsing
Codable is a compiler magic trick that automatically converts Swift objects to and from formats like JSON. It's used constantly for parsing API responses or saving data to disk. The footgun: decoding fails if JSON keys don't exactly match your property names.

URLSession: The Core of iOS Networking
URLSession is the engine for all network requests in Apple apps. Use it to fetch API data, download images, or upload files. The biggest footgun is blocking the main UI thread, which freezes your app; always perform network tasks asynchronously.

URLRequest: The Blueprint for a Network Call
URLRequest is the recipe for a network call, not the call itself. It bundles the URL, HTTP method, headers, and body. You hand this 'order form' to URLSession to execute. The footgun is thinking URLRequest sends the request—it only describes it.

JSONDecoder: Turning JSON into Swift Types
JSONDecoder is your translator for turning raw JSON data into native Swift structs or classes. It's the standard way to parse API responses, letting you work with typed, safe objects.

JSONEncoder: Turning Swift Objects into JSON
JSONEncoder is your app's translator, converting Swift objects into JSON data for APIs. It's the "serialization" half of Codable. Use it to send data to a server or save objects. The footgun: mismatched keys or date formats require configuring the encoder.

CALayer
CALayer is the Core Animation object that actually draws and animates a UIView's content on screen, while the view itself handles touch input, layout, and event routing on top of it.

UIBezierPath: Drawing Custom Shapes in Code
UIBezierPath is a digital pen for drawing custom shapes. You define a path with lines and curves, then fill or stroke it. It's essential for custom charts, icons, or non-rectangular views.

Core Location: Your App's Sense of Place
Core Location gives your app its sense of place, from a precise coordinate to a general region. It powers maps, ride-sharing, and location-based reminders. Use it for one-time fixes, continuous tracking, or geofencing.

MapKit: Putting Apple Maps in Your iOS App
MapKit is the toolkit for embedding Apple's interactive maps directly into your app. Use it to show user location, display points of interest, or provide directions. The footgun is rendering too many pins at once; use clustering to keep the UI responsive.
UserNotifications Framework: iOS Alert Gatekeeper
UserNotifications is the gatekeeper between your app and the lock screen. You use it to request permission and schedule local or push alerts on iOS. Send a notification before authorization and the system silently drops it.

AVFoundation: Apple's Toolkit for Audio and Video
AVFoundation is Apple's low-level toolbox for audio and video. Use it for custom camera UIs, video editing, or complex audio playback. The main footgun is its complexity; managing sessions, inputs, and outputs on the correct threads is notoriously difficult.

XCTest: Apple's Built-in Testing Framework
XCTest is your built-in toolbox for writing unit, performance, and UI tests in Xcode. Use it to verify individual functions or simulate user interactions. A common footgun is writing tests that depend on each other; they must be independent to be reliable.

XCTAssert: The Pass/Fail Gatekeeper of Your Tests
XCTAssert functions are the gatekeepers of your tests, asserting if code behaves as expected. Use them to validate conditions like equality (XCTAssertEqual) or truth (XCTAssertTrue).
CocoaPods: Managing Dependencies in Apple Projects
CocoaPods manages third-party libraries in your Swift/Objective-C projects. You list dependencies in a Podfile, run pod install, and it handles the rest. The biggest footgun: always open the .xcworkspace, not the .xcodeproj file after installing.
Apple Developer: The Official Resource Hub
Think of Apple Developer as the official command center for building on Apple platforms. It's the central website for the tools, APIs, and technical resources you need to write software for iOS, macOS, watchOS, and more.
App Store Connect: Your App's Mission Control
Think of App Store Connect as your app's mission control. It’s the web portal for managing your app's lifecycle after coding, from uploading builds and running TestFlight betas to submitting for final review.

Archiving an iOS App for Distribution
Archiving an app bundles your code and assets into a distributable package. It's the final step before sending your app to beta testers on TestFlight or submitting it to the App Store.
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