- Inheritance
- Polymorphism
- Encapsulation
- Abstraction
- Properties
- Control Flow (
if,for,while,switch) - Collections (
Array,Set,Dictionary) - Keywords (
let,var,in,is,as,defer,guard) - Functions and Parameters
- Higher Order Functions
- Access Control
- Type Casting
-
Optionals
- Nil-Coalescing Operator
- Optional Chaining
- Optional Binding
guardStatementdeferStatement
-
Lazy Keyword
-
[weak self]&[unowned self] -
Enums
-
Class vs Struct
-
Closures
@escaping&@nonescaping
-
Protocols & Delegates
-
Core Functions
map(_:)filter(_:)reduce(_:_:)reduce(into:_:)compactMap(_:)flatMap(_:)forEach(_:)sorted(by:)reversed()joined()
-
Search & Conditionals
contains(where:)allSatisfy(_:)first(where:)min(by:),max(by:)prefix(while:)drop(while:)
-
Slicing
prefix(_:),suffix(_:)dropFirst(_:),dropLast(_:)split(separator:)
-
Grouping & Indexing
enumerated()partition(by:)Dictionary(grouping:by:)Dictionary(uniqueKeysWithValues:)
-
Utility
zip(_:_:)stride(from:to:by:)lazyindices.map
-
Swift 5.7+ Additions
chunks(ofCount:)windows(ofCount:)compactMapValues(_:)sequence(first:next:)
- UIViewController Lifecycle
- IBOutlets & Variables
- Constraints & AutoLayout
- UITableView & UICollectionView
- Navigation (Push, Present, Pop, Unwind)
- Storyboard vs Code
- Local Notifications
- Local Notification with Actions & Categories
- Push Notifications
- Silent Push Notifications
- Badge Updates
- NotificationCenter (In-App Communication)
- UserDefaults
- FileManager
- Keychain
- CoreData
- Realm, SQLite
- Introduction to CoreLocation & MapKit
- Requesting Location Permissions
- Checking Location Services
- Getting the User’s Location
- Displaying Location on Map
- Customizing Annotations
- Handling Location Updates
- Best Practices
- What are Generics?
- Basic Generic Function
- Generic Types (Structs, Classes, Enums)
- Generic Constraints
- Associated Types in Protocols
- Advanced: Generic Protocol Extensions
- Advanced: Type Erasure with Generics
- Benefits
- What is Memory Management?
- Automatic Reference Counting (ARC)
- Strong References
- Retain Cycles
- Weak and Unowned References
- Closures and Capture Lists
- Memory Debugging
- Combine and Retain Cycles
- Swift Concurrency (async/await)
- Best Practices
- Introduction
- URLSession
- URLRequest
- Codable and JSONDecoder
- Using Completion Handlers
- Using async/await (Swift Concurrency)
- Alamofire (Third-party)
- Combine Framework
- Error Handling
- Best Practices
- What is CocoaPods?
- Installing CocoaPods
- Setting Up CocoaPods in a Project
- Adding Dependencies
- Using Pod Commands
- Updating and Removing Pods
- Best Practices
- What is Swift Package Manager?
- Benefits of Using SPM
- Creating a Swift Package
- Adding Dependencies
- Using Packages in Xcode
- Common Commands
- Best Practices
- What Are Design Patterns?
- Creational Patterns
- Singleton
- Factory
- Structural Patterns
- Adapter
- Decorator
- Behavioral Patterns
- Observer
- Strategy
- Best Practices
- MVC (Model-View-Controller)
- MVVM (Model-View-ViewModel)
- VIPER
- Coordinator
- Clean Architecture
- Dependency Injection
- Protocols for Testability
- What is Git?
- Basic Git Workflow
- Common Git Commands
- Branching Strategy
mainbranchdevelopbranchfeaturebranchestaskbranches
- Working with Remotes
- Best Practices
- What is Unit Testing?
- What is UI Testing?
- XCTest Framework
- Writing Unit Tests
- Writing UI Tests
- Mocking & Dependency Injection
- Code Coverage
- Best Practices
- What is Localization?
- Adding Localized Strings
- Using String Catalogs
- Switching Languages for Testing
- What is Accessibility?
- Adding Accessibility Support
- VoiceOver and Dynamic Type
- What is SwiftUI?
- SwiftUI vs UIKit
- Basic Components
- Layout System
- State Management
- View Lifecycle
- SwiftUI Macros (Swift 5.9 / Swift 6+)
- Navigation
- Animations
- SwiftUI and Combine
- Previews
- Integration with UIKit
- Best Practices
- What is Reactive Programming?
- What is RxSwift?
- Core Concepts
- Observables
- Observers
- Subjects
- Disposables
- Schedulers
- Creating Observables
- Subscribing to Observables
- Disposing Subscriptions
- Using Subjects
- PublishSubject
- BehaviorSubject
- ReplaySubject
- AsyncSubject
- Operators
- map, flatMap, filter, debounce, merge, combineLatest, etc.
- Chaining Operators
- Error Handling
- Threading with Schedulers
- RxCocoa Integration
- MVVM with RxSwift
- Best Practices
- What is Continuous Integration / Delivery?
- Benefits of CI/CD in iOS
- Common CI/CD Tools
- Fastlane
- Bitrise
- CircleCI
- GitHub Actions
- Deployment
- TestFlight
- Best Practices