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 -
Synchronisation - Problems
- Race condition
- Deadlock
- Reader-writer problems
-
Cocoa Touch-
UIKit-
UIApplication-
States - UIApplicationDelegate
-
-
UIViews - Layers
-
Layout-
Frame-based -
Autolayout- UIStackView
-
- Animations
- Transform
-
Navigation -
UIViewController-
Lifecycle
-
-
-
Foundation-
Notifications vs Delegation vs observing - Collections
-
Networking -
Serialization- NSCoding
-
Codable -
JSON - XML
- Protobuf
-
- UserNotifications
- Core Location
- Core Motion
-
Work in background mode
-
-
Software Architecture-
Design Patterns-
Architectural-
MVC -
MVVM -
MVP -
Clean architecture - Coordinators
-
-
Creational-
Singleton - Factory
- Abstract Factory
-
- Structural
- Behavioural
- Observer
- Concurrency
-
-
Design Principles-
SOLID -
Inversion of Control-
Dependency Injection - Service Locator
-
- Protocol-Oriented Programming
-
- Object-Oriented Programming
- Functional programming
- Functional Reactive Programming Frameworks
- React Native
- RxSwift
- RxRealm, RxDataSources
- Functional Reactive Programming Frameworks
-
-
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
-
-