IOS (SWIFT) EĞİTİMİ
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ış. Result
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.



