iOS Swift 3D logosu yanında küçük iPhone silüeti bembeyaz arka planda premium kompozisyon

iOS Swift eğitimi, fikirden App Store'a taşınabilir bir uygulama çıkartmak isteyen mühendisleri pratik seviyede yetiştirir. Swift'in optional ve Result tipiyle güvenli akış kurma; SwiftUI ile UIKit arasında proje yaşam döngüsüne göre seçim yapma somut senaryolarla işlenir.

Program sonunda katılımcı, Combine ve async/await ile asenkron işi modern biçimde yazar; MVVM ile TCA arasında state yönetimi tercihi yapar; Core Data ile SwiftData arasında doğru saklama katmanı seçer. Instruments ile profiling ve TestFlight üzerinden App Store Connect süreci uçtan uca pekiştirilir. Eğitim sırasında Apple Swift temel referans olarak kullanılır.

Katılımcı Profili

Bu eğitim, Swift ile iOS uygulamasını fikirden App Store'a taşımak isteyen rollere yöneliktir:

  • Mobil Geliştiriciler: iOS uygulaması yazan mühendisler
  • Swift Geliştiriciler: SwiftUI ile UIKit arasında seçim yapan roller
  • Cross-platform Geçişi Yapanlar: React Native veya Flutter'dan native iOS'a geçenler
  • Mobil Teknik Liderler: iOS proje standardı ve mimari kuran mühendisler
  • macOS Uygulama Geliştiricileri: Apple Silicon ile masaüstü uygulama yazan roller

Ön Gereklilikler

Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:

  • Herhangi bir dilde OOP (class, protocol, inheritance) deneyimi
  • Swift veya başka bir modern dile temel düzeyde aşinalık
  • macOS işletim sistemi ve Xcode kullanım deneyimi (eğitim öncesi)
  • Git ile commit, branch ve PR workflow'una rahatlık
  • Mobil uygulama mantığına (lifecycle, navigation) genel aşinalık

Süresi ve Tarihi

Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.

Kazanımlar

Programın sonunda katılımcı, Swift ile iOS uygulamasını fikir aşamasından App Store'a taşıyabilir:

  • Swift'in optional ve Result tipi ile güvenli akış kurar
  • SwiftUI ile UIKit arasında proje yaşam döngüsüne göre seçer
  • Combine ve async/await ile asenkron işi modern biçimde yazar
  • MVVM ve TCA (The Composable Architecture) ile state yönetir
  • Core Data ile SwiftData arasında doğru saklama katmanı seçer
  • Instruments ile profiling ve memory graph ile leak yakalar
  • TestFlight ve App Store Connect üzerinden release süreci işletir

iOS (Swift) Eğitimi Konuları

1. Apple Ekosistemi ve Xcode

  • iOS, iPadOS, macOS, watchOS, tvOS, visionOS yelpazesi
  • Xcode kurulumu ve Apple Developer Program
  • Simulator ve gerçek cihaz test akışı
  • Xcode Cloud ile build ve test

2. Swift Söz Dizimi ve Type System

  • let, var ve type inference
  • Tuple, Optional, Generic temel
  • Swift sürüm akışı ve Swift Evolution
  • Objective-C interop notları

3. Optional ve Nil Handling

  • Optional binding: if let, guard let
  • Optional chaining (?.)
  • Nil-coalescing (??) operatörü
  • Force unwrap (!) riski
  • Optional pattern matching

4. Closure ve First-Class Functions

  • Closure expression syntax
  • Trailing closure ve shorthand argument
  • Capture list ve [weak self], [unowned self]
  • Escaping vs non-escaping closure

5. Protocol ve Protocol Extension

  • Protocol-oriented programming felsefesi
  • Protocol extension ile default implementation
  • Associated type ve generic protocol
  • Existential type (any) vs opaque type (some)

6. Struct, Class, Actor

  • Value type (struct) vs reference type (class)
  • Copy-on-write semantik
  • Actor ile data race önleme
  • Sendable protocol ve concurrent safety
  • Enum ve associated value

7. async/await ve Structured Concurrency

  • async function ve await keyword
  • Task, TaskGroup, AsyncSequence
  • Structured concurrency: parent-child task
  • MainActor ve UI güncellemeleri
  • Continuation ile callback-async köprüsü

8. SwiftUI - Declarative UI

  • View protocol ve body property
  • Modifier zinciri ve order önemi
  • ViewBuilder ve composable yapı
  • NavigationStack, TabView, List
  • GeometryReader ve layout sistemi

9. UIKit - Imperative UI

  • UIView, UIViewController hiyerarşi
  • Storyboard ve XIB vs programmatic
  • Auto Layout ve constraint
  • UICollectionView ve diffable data source
  • SwiftUI ve UIKit interop (UIViewRepresentable)

10. State Management - @State, @Binding, @Observable

  • @State ile local state
  • @Binding ile child-parent ilişkisi
  • @Observable ve modern observation
  • @Environment ve dependency injection
  • StateObject vs ObservedObject

11. Combine Framework

  • Publisher ve Subscriber protokolleri
  • Operator: map, filter, combineLatest, merge
  • Subject: PassthroughSubject, CurrentValueSubject
  • AnyCancellable ve subscription yönetimi
  • Async/await vs Combine seçimi

12. Navigation - NavigationStack ve Router

  • NavigationStack ve path-based navigation
  • NavigationPath ile programmatic routing
  • Deep link ve scene phase
  • Coordinator pattern UIKit'te

13. Data Persistence - SwiftData, Core Data

  • SwiftData ile modern persistence (macro-based)
  • Core Data: entity, attribute, relationship
  • NSPersistentContainer ve context yönetimi
  • CloudKit sync ve NSPersistentCloudKitContainer
  • UserDefaults, Keychain alternatifleri

14. Networking - URLSession ve async

  • URLSession data, download, upload task
  • async/await ile modern HTTP
  • Codable ile JSON serialization
  • URLSessionConfiguration ve cache policy
  • Alamofire alternatifi

15. Concurrency - GCD ve Operation

  • Grand Central Dispatch (GCD) temelleri
  • DispatchQueue main vs global
  • QoS (Quality of Service) seviyeleri
  • OperationQueue ve dependency
  • Modern async/await tercih edilen yaklaşım

16. Animation ve Gesture

  • SwiftUI animation modifier
  • withAnimation ve implicit/explicit
  • matchedGeometryEffect ile shared element
  • Gesture: TapGesture, DragGesture, LongPressGesture
  • Custom transition

17. Testing - XCTest ve Swift Testing

  • XCTest framework: XCTestCase, assertion'lar
  • Swift Testing (yeni macro-based framework)
  • Async test ve expectation
  • UI testing ile XCUIApplication
  • Code coverage ve test plan

18. App Lifecycle ve Background Execution

  • SceneDelegate ve UIApplicationDelegate
  • Foreground, background, suspended state
  • Background task ve refresh
  • Background processing limit

19. Push Notification ve APNs

  • APNs (Apple Push Notification service)
  • UserNotifications framework
  • Rich notification ve attachment
  • Notification action ve category
  • Firebase Cloud Messaging entegrasyonu

20. App Store Submission ve TestFlight

  • Provisioning profile ve sertifika yönetimi
  • App Store Connect ve metadata
  • TestFlight ile beta dağıtım
  • App Review guideline ve red sebepleri
  • Phased release ve gradual rollout

21. Universal App - iPad, macOS, watchOS

  • Multiplatform app ve target ayarı
  • Catalyst ile macOS desteği
  • watchOS app yapısı ve complications
  • visionOS ve immersive deneyim

22. Performance - Instruments ve Profiling

  • Instruments: Time Profiler, Allocations, Leaks
  • Memory graph ve retain cycle tespiti
  • Network Link Conditioner
  • Energy gauge ve battery impact
  • App size optimization (App Thinning, Bitcode)

IOS (SWIFT) EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları


SwiftUI ile UIKit arasında karar nasıl verilir?

SwiftUI declarative, daha az kod, hot reload (Preview), yeni iOS özellikleri için tercih edilen yol. UIKit imperatif, mature ve karmaşık custom UI için hâlâ avantajlı; iOS 13 öncesi desteklemek gerekiyorsa zorunlu. Yeni projeler SwiftUI ile başlayıp UIKit'i gerektiğinde UIViewRepresentable ile karıştırıyor.

Combine ile async/await arasında ne zaman hangisi?

Combine reactive stream, Publisher/Subscriber zinciri için doğru — özellikle UI event stream'leri. async/await tek değer veya hata dönen Task akışları için daha sade. Modern Swift kodu basit async API için await tercih ediyor; karmaşık event stream Combine'da kalıyor. AsyncSequence ikisinin köprüsü.

MVVM ile The Composable Architecture (TCA) arasında karar?

MVVM klasik separation — ViewModel state ve action'ı yönetir, View bağlanır. TCA Redux-tarzı tek store, action ve reducer ile testable state akışı sunar — büyük SwiftUI uygulamalarında popüler. Küçük uygulamada MVVM yeterli, ölçek arttıkça TCA tutarlı state yönetimi sağlar.

Core Data ile SwiftData arasındaki fark nedir?

Core Data olgun, Objective-C kökenli ama Swift'te boilerplate gerekiyor. SwiftData (iOS 17+) macro-based, sade Swift söz dizimi ile aynı altyapıyı kullanır. Yeni projeler SwiftData ile başlayabilir; legacy Core Data projeleri kademeli geçebilir veya kalabilir.

Optional ve Result tipiyle güvenli akış nasıl kurulur?

Optional değer yokluğunu tip seviyesinde gösterir; guard let, if let, nil coalescing (??) ile akış. Resultsync veya async hata yönetimi için do-catch yerine veya yanında kullanılır. Force unwrap (!) test/debug dışı production kodunda uyarı sinyalidir.

Instruments ile profiling neyi gösterir?

Time Profiler CPU kullanımını, Allocations memory yapılarını, Leaks memory leak'leri, Energy battery tüketimini izler. Specific Animation Hitches template'i UI takılmalarını yakalar. Production'da Crashlytics veya MetricKit telemetry tamamlar — Instruments development time tool.