📚 Stack
👫 Queue
📶 Heap
📁 LRU Cache
NSCache
Memory Management
ARC
Heap and stack
Memory segments
Memort leaks and debugging them
Retain cycles
Deadlocks, race conditions, readers writers problem, thread explosion, priority inversionReference and Value Types
Classes
Structs
Comparing classes and structs
InitializersGCD
Synchronous and asynchronous execution
Differentiating synchronous and asynchronous calls/functions
Queues - serial and concurrent
QoS
Priority inversion
Threads
Combine framework
GCD APIs:
Dispatch work items
Dispatch groups
Semaphores
Dispatch BarrierUIKit
View hierarchy
View lifecycles
Frame vs. bounds
UITableView vs. UICollectionView
UITableViewHigher Order Functions
Map
Filter
ReduceClosures Escaping closures
Capturing
Capture lists
Memory issues with closures
ScopeData Persistence
Core data
User defaults
File ManagerSoftware Architectural Patterns
App architect intro
MVC
Atomic design pattern
Protocol oriented programming
NetworkingSwiftUI
View Construction
Compared to UIKit
View LayoutOptionals
If let
If var
While let
While var
Doubly nested optionals
Optional chaining
Nil-coalescing operatorAPI Availability
Checking api availability
Marking func/class as available in specific iOSCommunication Patterns
Delegates and protocols
Completion handlers
Singleton
Dependancy injection
Notification centerCollection Types
Under the hood of collections
Different initializations
Different APIs / operations
ArraysFoundation
NSKeyedArchiver and NSKeyedUnarchiver
URL Components
URL Session
Integer
Sequence
Sequence
IteratorProtocol
Stack as an iteratorSwift VS. ObjC
Enums
Generics
Switch statements