Xcode, iOS, macOS, watchOS, tvOS ve visionOS için uygulama oluşturmaya yönelik Apple'ın resmi entegre geliştirme ortamıdır (IDE). Xcode; kod düzenleyici, Interface Builder, cihaz simülatörleri, Swift/Objective-C derleyicisi, Instruments profil oluşturucu ve sürüm kontrol sistemi içerir. Apple Developer'da Xcode, IDE ve belgeleri indirmek için başlangıç noktasıdır.
Önemli Noktalar
Xcode IDE, kod yazmadan App Store'da yayınlamaya kadar uygulama oluşturmanın tüm döngüsünü sağlayan Apple'ın geliştirme ortamıdır. Xcode'un ilk sürümü 2003 yılında Project Builder'ın yerine piyasaya sürüldü. Mevcut sürüm, yalnızca macOS'ta minimum Sonoma 14.5 sürümüyle çalışan Xcode 16'dır (2025).
Xcode, tek bir pencerede kod düzenleyici (otomatik tamamlama ve yeniden düzenleme ile), Interface Builder (görsel UI tasarımı için), Simulator (emülatörlerde test için) ve Instruments (profil oluşturma için) birleştirir. Stack Overflow Geliştirici Anketi 2025'e göre, Apple platformu geliştiricilerinin %67'si Xcode kullanırken, geri kalanı AppCode (durduruldu) ve VS Code'u eklentilerle kullanmaktadır.
Xcode ve Swift yakından bağlantılıdır: her Swift sürümüyle aynı anda yeni bir Xcode sürümü çıkar ve otomatik tamamlama ve tür denetimi için güncellenmiş bir SourceKit-LSP içerir. Xcode 15+ ile Apple, Swift Macro Expansion'ı (Swift makroları için yerleşik hata ayıklama) ve sıkı Swift Concurrency modunu (Xcode 16'da data-race güvenliği) tanıttı.
Bir Xcode projesi (.xcodeproj), kaynak kod dosyalarını, kaynakları (resimler, yazı tipleri, sesler), derleme ayarlarını ve şema yapılandırmalarını içerir. Alternatif bir biçim, Swift Package Manager aracılığıyla kitaplıklar için Package'tir (.swiftpm) ve Xcode bunu Xcode 11'den beri yerel olarak destekler.
| Dosya / Klasör | Amaç |
|---|---|
| AppDelegate.swift | Uygulama giriş noktası, UIApplication yaşam döngüsü yönetimi |
| Main.storyboard | Geçişler (segues) ve ViewController bağlantıları ile görsel ekran grafiği |
| Info.plist | Uygulama yapılandırması: paket tanımlayıcısı, sürümler, izinler, desteklenen yönler |
| Assets.xcassets | Kaynak kataloğu: tüm çözünürlükler (1x, 2x, 3x) için simgeler, renkler, resimler |
| LaunchScreen.storyboard | Ana arayüz yüklenmeden önce görüntülenen başlangıç ekranı |
Workspace (.xcworkspace), CocoaPods veya Swift Packages aracılığıyla yönetilen birden çok proje ve bağımlılık için bir kapsayıcıdır. Önerilen yapı: Workspace, uygulama projesini ve SPM paketlerini içerirken, Swift kitaplıkları ana projedeki Package Dependencies aracılığıyla bağlanır.
Interface Builder, XIB (bireysel görünümler) ve Storyboard (ekran grafiği) biçimlerinde arayüzler oluşturmak için Xcode'un görsel düzenleyicisidir. Geliştirici, Kitaplık'tan UI öğelerini tuval üzerine sürükler, Auto Layout kısıtlamalarını yapılandırır ve Assistant Editor aracılığıyla kodla bağlantılar (Outlets, Actions) oluşturur.
Storyboard vs SwiftUI: Apple yeni projeler için SwiftUI'yi önerse de, Interface Builder UIKit eski kodları için ana araç olmaya devam etmektedir. Storyboard; Size Classes (iPad ve iPhone için uyarlama), Preview Assistant (anında önizleme) ve Variants (farklı cihazlar için UI özelleştirme) destekler. Xcode 16'da Interface Builder, aynı pencerede SwiftUI Previews desteği kazandı.
Auto Layout, uyarlanabilir arayüzler için bir kısıtlama sistemidir. Her constraint, görünümler arasında bir ilişki (genişlik eşitliği, kenar boşluğu, ortalama) tanımlar. Kısıtlama çakışmaları, düzeltme önerileriyle Issue Navigator'da görüntülenir. Safe Area Insets, Dynamic Island, kamera ve Home Indicator'ı otomatik olarak hesaba katar.
Xcode'da bir Scheme, bir dizi eylem tanımlar: Build, Run, Test, Profile, Analyze, Archive. Her şema bir hedefe (target) ve yapılandırmaya (Debug, Release) bağlıdır. Geliştirici farklı senaryolar için birden çok şema oluşturur: Development (Debug, simülatör), Staging (Release, test cihazı), Production (Release, Archive).
Derleme yapılandırmaları — Debug ve Release farklı optimizasyonlarla. Debug, tam hata ayıklama bilgileriyle (dSYM) optimizasyon olmadan (-O0) derler. Release, optimizasyonlar (-Os) ve ikili boyutu azaltmak için strip bayrağı içerir. Ön işlemci makroları (DEBUG=1), koşullu derleme yoluyla günlük kaydını kontrol etmeye olanak tanır.
Run Script Build Phases — derleme aşamalarında özel shell betikleri: kod oluşturma (Sourcery, SwiftGen), linting (SwiftLint), karartma (Mach-O). Build Phases sırası önemlidir — betikler derlemeden sonra ancak kod imzalamadan önce çalıştırılır. Xcode 16, CI/CD'yi hızlandırmak için Parallel Build Phases ekledi.
Xcode Simulator, fiziksel donanım olmadan uygulamaları çalıştırmaya ve test etmeye olanak tanıyan Apple cihazlarını emüle eder. Tüm iPhone, iPad, Apple Watch, Apple TV ve Vision Pro modelleri farklı işletim sistemi sürümleriyle desteklenir. Simulator, tüm donanım özelliklerini (kamera, Bluetooth, TrueDepth) emüle etmez ancak test senaryolarının %90'ını kapsar.
Simulator özellikleri: hızlı başlangıç (fiziksel cihazda dakikalara karşı saniyeler), durum anlık görüntüleri (testten önce tam durumu kaydetme), koşul simülasyonu (zayıf sinyal, yavaş ağ, düşük pil). Push bildirimlerinde hata ayıklamak için Simulator, bir .apns dosyasını simülatör penceresine sürükleyip bırakarak APNS gönderimini destekler.
Xcode 16 Simulator, grafik performans testi için Game Mode, gerçek zamanlı SwiftUI Previews ve genişletilmiş bir metrik seti kazandı: FPS, cihaz sıcaklığı, GPU kullanımı. Xcode 16 ile tüm simülatörler, Rosetta olmadan Apple Silicon'da yerel olarak çalışır.
Instruments, gerçek cihazlarda ve simülatörlerde uygulama performansını analiz etmek için Xcode'un yerleşik profil oluşturma aracıdır. Instruments; CPU, bellek, ağ, disk, grafik (Metal, OpenGL), enerji tüketimi ve Swift Concurrency için bir dizi izleyici sağlar.
Başlıca profil oluşturma araçları: Time Profiler (hangi işlevlerin CPU tükettiği), Allocations (bellek sızıntıları ve retain cycles), Leaks (döngüsel referansların tespiti), Network (HTTP trafiği ve DNS), Energy Log (bileşene göre pil tüketimi). Instruments, farklı uygulama derlemeleri arasında izleme karşılaştırmasını destekler.
Xcode 16'da Swift Concurrency araçları: Swift Tasks (tüm async/await görevlerinin ve durumlarının zaman çizelgesi), Actors (data-race yalıtım çakışmaları), SwiftPackage aracılığıyla Custom Instruments. Bu izleyiciler, data-race'lerde hata ayıklamaya ve uygulamanın hangi bölümlerinin ana iş parçacığını bloke ettiğini anlamaya yardımcı olur.
Sıkça Sorulan Sorular
Xcode yalnızca macOS'ta çalışır. Windows için resmi bir sürümü yoktur. Windows'ta iOS geliştirme için alternatifler: Xamarin/MAUI ile Visual Studio (Mac build host gerektirir), Flutter (Codemagic/Mac mini aracılığıyla iOS derlemesi) veya macOS sanal makinesi (Apple lisans sözleşmesini ihlal eder).
Xcode'daki Swift sürümü sabittir ve yeni IDE sürümüyle güncellenir. Swift'i yalnızca birden çok Xcode kurarak (örneğin Swift 5.9 için Xcode 15 ve Swift 6 için Xcode 16) veya Swift.org'dan Swift Toolchain aracılığıyla değiştirebilirsiniz. Toolchain seçimi: Xcode → Toolchains → Swift Development Toolchain.
SwiftUI Preview, Xcode içinde SwiftUI arayüzlerinin canlı oluşturma mekanizmasıdır. Kod #Preview makrosuna sarılır ve UI değişiklikleri tuvalde anında görüntülenir. Preview; farklı cihazları, karanlık/aydınlık modu, erişilebilirlik metriklerini ve veri durumlarını destekler. Tüm projenin derlenmesini gerektirmez.
Ana yöntemler: Parallel Builds (eşzamanlı derleme sayısı), Build Cache (ccache veya Xcode 16 Incremental Build), Optimizasyon seviyesi (-O0 ile Debug), Swift Strict Concurrency (minimum denetim). UI gerektirmeyen modüller için Previews'i devre dışı bırakmak ve SPM bağımlılıklarını optimize etmek de faydalıdır.
Başlıca alternatifler: SourceKit-LSP ile VS Code (Swift için hafif düzenleyici), AppCode (2024'te durduruldu), metin düzenleyici + xcodebuild ile komut satırı. Çapraz platform geliştirme için Flutter (VS Code) ve React Native (VS Code) kullanılır. Ancak App Store'a arşivleme ve yayınlama Xcode gerektirir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun