Training supplement

Tutorials / courses

  • Ray Wenderlich - tutorials on generic iOS development (all levels),
  • objc.io - in-depth articles and video talks on iOS development (intermediate),
  • Quality Coding - resources on unit-testing for iOS (intermediate),
  • pointfree.co - video talks on functional programming in Swift (advanced).

Tools

  • Carthage - dependency management,
  • SwiftLint - linter for Swift code (make sure to activate most of the opt-in checks),
  • Fastlane - scripts for CI/CD & general development workflow automation,
  • Sourcery - code generation for Swift,
  • SwiftGen - statically typed resources (fonts, images, assets),
  • Reveal - powerful view hierarchy debugger,
  • Tower - fast git GUI client for Mac,
  • Kaleidoscope - powerful diffing tool for Mac.

Libraries (production)

  • RxSwift - functional reactive programming for Swift (advanced),
  • RxDataSources - table view & collection view data bindings for RxSwift (advanced),
  • RxFeedback - feedback loop architecture based on RxSwift (advanced),
  • Anchorage - utility to easily define constraints in code,
  • Swinject - Dependency Injection container for Swift,
  • SwinjectAutoregistration - utility to easily register dependencies in Swinject container,
  • MBProgressHUD - popular component for displaying progress HUDs,
  • Realm - fast, object database for mobile apps,
  • AlamofireImage - utility for image loading and caching,
  • KeychainAccess - managing iOS Keychain simplified,
  • Hero - nice transitions between controllers (animations).

Libraries (testing)

  • swift-snapshot-testing - snapshot testing for views & controllers,
  • Quick - BDD style unit-testing framework,
  • Nimble - matcher pack for Quick,
  • SpecTools - general unit-testing utilities for UIKit (simulating gestures, etc.),
  • specleaks - detecting memory leaks.

Example projects