Project Structure: Schemes, Targets & Build Configs
The Apple Toolchain
Xcode bundles editor, Interface Builder, debugger, Simulator, and build/deployment tools — required (or at least its underlying build toolchain) for building and submitting any App Store app, macOS-only.
.xcodeproj / .xcworkspace, Targets & Schemes
A .xcodeproj holds a project's files/settings/targets; a .xcworkspace groups multiple projects (common with CocoaPods, which combines the app project + pod dependencies). A target is one build product — a single project might have an App target, a Tests target, and a WidgetExtension target. A scheme configures HOW to build/run/test/archive — which build config, which device/simulator, launch arguments.
Debug vs. Release
Debug keeps debug symbols and skips optimizations — easier to debug, larger/slower. Release applies compiler optimizations and strips debug info — smaller, faster, what actually ships to the App Store.
Dependencies
Podfile (CocoaPods) or Package.swift (Swift Package Manager) declare external library dependencies. SPM, being Apple's first-party solution built into Xcode, has become the increasingly favored choice over CocoaPods for newer projects.
Keep your own version of these notes — editable, searchable, and organised by your stack.
Start free