Tapping on a link will take you to relevant materials.
- iOS Developer
- Practical knowledge
- Getting started
- First pet project ideas
-
Languages-
Objective-C-
Blocks-
Memory Management
-
-
-
KVC -
KVO - Toll-free bridging
-
Runtime-
Method messaging - Swizling
- NSZombies and KVO implementation
-
-
-
Swift-
Closures -
Initializers -
Generics -
Protocols -
Structs -
Enums - Runtime
-
-
Memory management-
Stack and Heap -
Value vs Reference type -
MRC -
ARC-
weak references
-
-
Retain cycles - Garbage collector
-
Memory leaks - Shallow and deep copying
-
Autorelease pool
-
-
Multithreading and concurency- POSIX threads
- NSThreads
- Perform selector family
-
GCD -
NSOperation(Queue) -
Runloop -
Methods of thread synchronisation - Problems
- Race condition
- Deadlock
- Reader-writer problems
-
Cocoa Touch (iOSKit)-
UIKit-
UIApplication-
States -
UIApplicationDelegate
-
-
UIViews - Layers
-
Layout-
Frame-based (manual) -
Constraint-based (autolayout)- UIStackView
-
-
Animations -
Transform -
Screen transitions (Navigation) -
ViewController-
Lifecycle
-
- UserNotifications
-
-
Foundation-
Notifications, Delegation and observing - Collections
-
Networking -
Serialization- NSCoding
-
Codable -
JSON - XML
- Protobuf
-
- Core Location
-
Work in background mode
-
-
Software Architecture-
Design Patterns -
Design Principles-
SOLID -
Inversion of Control-
Dependency Injection - Service Locator
-
-
- Object-Oriented Programming
- Functional programming
- Functional Reactive Programming Frameworks
- React Native
- RxSwift
- RxRealm, RxDataSources
- Functional Reactive Programming Frameworks
-
-
Third-party dependencies management-
Cocoapods - Carthage
- Swift Package Manager
-
- Project structure and File/Group organisation
-
Version Control Systems - Debugging
- Instruments
- Best practices
- Checklists
- UX
-
Caching and Persistency-
Core Data - Realm
- YAPDatabase
-
-
Testing-
Unit Tests - Snapshot Tests
- Functional test
- TDD
- BDD
-
- Performance optimization
- Increase FPS
- Decrease memory footprint
- Code signing
- Tools
-
Swiftlint - Sourcery
- Fastlane
-
- Continuous Integration
- Jenkins
- Xcode server
- Security
- Keychain
- Security Transforms API
- tvOS
- WatchKit
- Getting started
- Computer Science knowledge
-
Algorithms-
Sorting -
Graph Theory-
Trees
-
-
Strings - Greedy
- Dynamic Programming
- Bit Manipulation
-
Recursion - Game Theory
- NP Complete
-
Big-O notation
-
-
Abstract Data Types-
Stack -
Array -
List -
Map - Multimap
-
Set - Multiset (Bag)
-
Graph -
Queue - Priority Queue
- Double-ended priority queue
- Double-ended queue
-
-
System design
-
- Practical knowledge