Xcode
01 / 02

Project Structure: Schemes, Targets & Build Configs

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