Learn the tools behind building, debugging, testing, and distributing an iOS app. Start with project structure, then work toward repeatable builds and useful diagnostics. This page contains topic outlines; articles will be linked as they are written.
Article available Coming soon
1. Projects and Build Structure
- Projects, Workspaces, Targets, and Schemes
- Build Configurations and Configuration Files
- Understanding Build Settings and Inheritance
- Adding Swift Packages and Reviewing Resolved Versions
- Resources, Target Membership, and Bundle Boundaries
2. Everyday Workflows
- Navigating Symbols, Call Sites, and Related Files
- Refactoring Names Without Breaking References
- Using Previews with Deterministic Sample Data
- Managing Simulators, Devices, and Runtime Versions
- Source Control, Diffs, and Conflict Resolution in Xcode
3. Debugging
- Breakpoints, Conditions, and Debugger Actions
- Inspecting Values and Stack Frames with LLDB
- Debugging View Hierarchies and Layout Constraints
- Reading Crash Reports and Symbolicating Stacks
- Diagnosing Memory Leaks with the Memory Graph
- Using Address, Thread, and Undefined Behavior Sanitizers
4. Tests and Performance
- Test Targets, Test Plans, and Selected Runs
- Reading Test Results, Attachments, and Coverage
- Profiling CPU Work with Time Profiler
- Tracking Allocations and Retained Memory
- Diagnosing Slow Builds and Incremental Build Failures
5. Signing and Distribution
- Bundle Identifiers, Capabilities, and Entitlements
- Certificates, Provisioning Profiles, and Code Signing
- Archive Builds and Distribution Configurations
- TestFlight Builds, Version Numbers, and Release Checks
- Reproducible Command-Line Builds with
xcodebuild
Up next
UIKit