- MVVM in practice: MVVM + binding
- MVC, MVP, MVVM, VIPER
- Ribblets : SourceCode : RIP architecture : Video : Wiki
- VIPER + SwiftUI, VIPER Sample Video
- How to do complex animations without nesting multiple UIView.animate? animateKeyFrames
- Asynchronously Loading Images into Table and Collection Views
- Prefetching Collection View Data
- Concurrency and Threading
- Result Type : Cleaner Network Calls
- URLSession vs 3rd party libaries (Alamofire, AFNetworking)
- Error Handling - Do, Try, and Catch
- Unwrapping - Guard, If Let, Chaining, Force
- Filter, Map and Reduce
- Class vs Struct
- Retain Cycle, Automatic Reference Counting, Memory Leak, #
- Access Control: Private, FilePrivate, Internal, Public, Open
- Enum
- Lazy
- TypeAlias
- Convenience Initializers vs Designated Initializers
- Escape Closure
- OptionSet
- Push Notification: Local & Remote, video
- SFSafariViewController (ios9-10), SFAuthenticationSession (ios11-12), ASWebAuthenticationSession (ios12+): internal web browser for login page (e.g. OAuth) #
- Copy On Write, Copy On Assign, Memory Slice (ArraySlice)
- Unit Test & UI Test: XCTest & XCUITest
- Scaling up an iOS app using modules
- Grokking the Mobile System Design interview
- Mobile System Design Interviews (iOS and Android)
- iOS System Design Interview - Alex Bush, Youtube
- iOS System Design Interview - Alex Bush, Course
- Best Practices for Mobile-Friendly APIs - Natasha Robot
- A Massive Guide to Building a RESTful API for Your Mobile App
- System Design Interview