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
- NSZombies and KVO implementation
- Swizzling
-
-
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
-
Synchronization
- 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
- Factory
- Abstract Factory
- Builder
- Factory Method
- Object Pool
- Prototype
- Singleton
-
Structural
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
-
Behavioural
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Visitor
- Concurrency
- Anti-pattern
-
-
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
-
-