Last Update: 23/June/2018.
Curated list of articles, web-resources, tutorials, Stack Overflow
and Quora
Q&A, GitHub
code repositories and useful resources that may help you dig a little bit deeper into iOS. All the resources are split into sub-categories which simlifies navigation and management. Feel free to use and suggest something to learn (iOS related of course 😜).
You may see some non-directly related topics such as Computer Graphics
, Machine Learning
or Design Patterns
- these are actually related, in some ways, to iOS
development, but in a much broader and more specific way. With the addition of new materials, the structure of the document will be properly maintained meaning that it will become a reference book for learning. Happy evolving 🤓:octocat:
- About
- Amazing Resources
- ARKit
- Vision Framework
- CoreML
- CreateML
- SceneKit
- SpriteKit
- GameplayKit
- Metal
- AVFounation
- ReplayKit
- MapKit
- Asset Catalog
- Playground
- UIKit
- Core Animation
- Core Graphics
- Core Image
- Core Location
- Core Data
- Core Motion
- HealthKit
- CloudKit
- In-App Purchase
- NLP
- Swift
- Xcode
- Internationalization
- Security
- Payments
- Document Based Apps
- Algorithms and Data Structures
- Networking
- Frameworks Development
- Debugging
- Testing
- App Submission
- Git
- Asynchronous Programming
- Functional Programming
- Protocol-Oriented Programming
- Architecture And Design Patterns
- Test Driven Development
- Computer Graphics
- iOS Development
- Machine Learning
- Clean Code
- App Distribution
- CocoaPods
- Carthage
- Framworks
- Design
- UX
- Interview
- Other
- Error Handling (Swift 3)
- Encoding and Decoding in Swift 4
- https://medium.com/compileswift/encoding-and-decoding-in-swift-4-f82114897862
- https://github.com/ole/whats-new-in-swift-4/blob/master/Whats-new-in-Swift-4.playground/Pages/Encoding%20and%20decoding.xcplaygroundpage/Contents.swift
- https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types
- http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/
- Encoding, Decoding and Serialization in Swift 4
- Single Value Codable
- Using Swift Codable With Property Lists
- Codable cheat sheet
- Lazy Initialization with Swift
- Using lazy properties in Swift
- Swift Lazy Initialization with Closures
- Stored Properties In Swift Extensions
- Bindings and KVO alternatives
- KVO In iOS 11
- Pattern Matching, Part 1: switch, enums & where clauses
- Pattern Matching, Part 2: tuples, ranges & types
- Pattern Matching, Part 3: Custom pattern matching & syntactic sugar
- Pattern Matching, Part 4: if case, guard case, for case
- Swift + Keywords (V 3.0.1)
- What’s New in Swift 4 by Example
- Solving the binding problem with Swift
- Swift Get Class Name
- Swift Algorithm Club: Swift Linked List Data Structure
- Swift Algorithm Club: Swift Queue Data Structure
- Swift Algorithm Club: Swift Trie Data Structure
- Swift Algorithm Club: Swift Stack Data Structure
- Swift Algorithm Club: Swift Binary Search Tree Data Structure
- Swift Algorithm Club: Heap and Priority Queue Data Structure
- Swift Algorithm Club: Graphs with Adjacency List
- Swift Algorithm Club: Swift Merge Sort
- Algorithms for Beginners — Bubble Sort, Insertion Sort, Merge Sort
- Swift Algorithm Club: Boyer Moore String Search Algorithm
- Swift Algorithm Club: Swift Breadth First Search
- Swift Algorithm Club: Minimum Spanning Tree with Prim’s Algorithm
- Swift Algorithm Club: Swift Dijkstra’s Algorithm
- Network Layers in Swift
- How to write Networking Layer in Swift (2nd version)
- Getting Started with Moya
- An Introduction to Creating and Distributing Embedded Frameworks in iOS
- Creating iOS/OSX Frameworks: is it necessary to codesign them before distributing to other developers?
- Conditionally embed your dynamic frameworks
- Getting Started with Reusable Frameworks for iOS Development
- Instruments Tutorial with Swift: Getting Started
- Debugging Swift code with LLDB
- Getting started with signposts
- How to Submit An App to Apple: From No Account to App Store – Part 1
- How to Submit An App to Apple: From No Account to App Store – Part 2
- A successful Git branching model
- Introducing GitFlow
- Git-flow cheatsheet
- Branching
- Git - the simple guide
- Comparative Asynchronous Programming
- Reducers: Dealing With Asynchrony
- Concurrency in Swift: One possible approach
- Parallel programming with Swift: Operations
- Introducing Protocol-Oriented Programming in Swift 3
- Introduction to Protocol Oriented Programming in Swift
- How Protocol Oriented Programming in Swift saved my day?
- Separation Of Concerns Using Protocols In Swift
- Protocol Composition In Swift
- Design Patterns on iOS using Swift – Part 1/2
- Design Patterns on iOS using Swift – Part 2/2
- Using child view controllers as plugins in Swift
- Promises in Swift: Asynchronous Promises: Proof of Concept in Swift
- Promise Pattern on Swift with PromiseKit And why you should migrate your async calls to them
- Under The Hood Of Futures And Promises In Swift
- An iOS Coordinator Pattern
- Coordinator Tutorial for iOS: Getting Started
- Coordinators Redux
- MVVM and Coordinator pattern together
- How to use the coordinator pattern in iOS apps
- MVVM-C with Swift
- MVVM-C A simple way to navigate
- UIKonf 2016 – Day 1– Steve "Scotty" Scott – MVVM-C In Practice
- MVVM in Swift
- An Introduction to the MVVM Design Pattern
- Swift and ModelView-View-Model in Practive
- Sample application using MVVM in Swift
- MVVM in Swift
- Introduction to MVVM
- MVVM is Not Very Good
- Simplification Of IOS View Controllers: MVVM Or Presentation Controls?
- On MVVM, and Architecture Questions
- MVVM and Coordinator Patterns Together
- Design Patterns by Tutorials: MVVM
- Multicast Delegates in Swift
- Multicast on Swift 3 and MVVM-C
- Multicast Delegate and Delegates Composition
- Lightweight iOS View Controllers
- Apple’s Take on App Architecture
- Fluent Pagination - no more jumpy scrolling
- AdvancedCollectionView
- iOS: UITableView controller
- Nestable
- Advanced UITableViews Made Simple: YLTableView
- Typed, yet Flexible Table View Controller
- Complex table view state changes made easy
- Why you shouldn’t use delegates in Swift
- Understanding Delegates and Delegation in Swift 4
- Swift World: Design Patterns — Proxy
- A Design Pattern Story in Swift – Chapter 12: Proxy
- Protection Proxy
- Virtual Proxy
- BASIC THEORY OF PHYSICALLY-BASED RENDERING
- PHYSICALLY-BASED RENDERING, AND YOU CAN TOO!
- Volumetric Rendering
- Volumetric Rendering: Raymarching
- Volumetric Rendering: Surface Shading
- Volumetric Rendering: Signed Distance Functions
- Volumetric Rendering: Ambient Occlusion
- Volumetric Rendering: Hard & Soft Shadows
- Volumetric Rendering: Volume Raycasting
- Vertex displacement with a noise function using GLSL and three.js
- Make a Splash With Dynamic 2D Water Effects
- Real-time oil painting with OpenGL
- Exploring Metaballs and Isosurfaces in 2D
- Ray Marching and Signed Distance Functions
- How do Raymarch shaders work?
- Free Penumbra Shadows For Raymarching Distance Fields
- 14 must knows for an iOS developer
- On-Demand Resources in iOS Tutorial
- Learning Techniques for Programmers, by Programmers
- Projecting A Dynamic Decal onto a 3D Mesh
- Keras: The Python Deep Learning library
- SET-UP YOUR MAC FOR DEEP LEARNING WITH PYTHON, TENSORFLOW AND KERAS
- Calculus on Computational Graphs: Backpropagation
- Getting started with TensorFlow on iOS
- Apple’s deep learning frameworks: BNNS vs. Metal CNN
- Convolutional neural networks on the iPhone with VGGNet
- Getting Started with Deep MNIST and TensorFlow on iOS
- Use TensorFlow and BNNS to Add Machine Learning to your Mac or iOS App
- Develop Your First Neural Network in Python With Keras Step-By-Step
- Keras Tutorial: The Ultimate Beginner’s Guide to Deep Learning in Python
- Keras Deep Learning with Apple’s CoreMLTools on iOS 11
- Beginning Machine Learning with scikit-learn
- Code example uses TensorFlow to train a basic binary classifier on the Gender Recognition by Voice and Speech Analysis dataset
- "Hello world" in keras
- TensorFlow on iOS demo
- Anaconda - is the world’s most popular and trusted data science ecosystem.
- TensorFlow - An open-source software library for Machine Intelligence
- Caffe - Caffe is a deep learning framework made with expression, speed, and modularity in mind
- Keras - Deep Learning library for Python. Runs on TensorFlow, Theano, or CNTK.
- coremltools is a python package for creating, examining, and testing models in the .mlmodel format.
- 5 Genius Python Deep Learning Libraries
- Deep Learning: Keras Short Tutorial
- Integrating Keras & TensorFlow: The Keras workflow, expanded (TensorFlow Dev Summit 2017)
- Deep Learning Frameworks Compared
- Keeping
View Controllers
skinny and weakly-connected to models - Five sighns of code smell
- Managing View Controllers With Container View Controllers
- Avoiding Massive View Controllers by refactoring.
- Installing the same Pod for multiple targets
- CocoaPods Tutorial for Swift: Getting Started
- Adding Pods to an Xcode project
- App Design & Development Conference
- 9 Major UI mistakes that will kill your Apps!
- The ultimate guide for mobile developers, who want to design.
- The designer’s guide to mobile — shifting design across platforms
- Getting Typography Right in Digital Design
- Design Principles: a guide to less shitty feedback
- UX Design Patterns for Mobile Apps: Which and Why
- Creative Motion: 12 Concepts of Interface Animation.
- Honing Your Mobile Apps With Savvy User Research
- UXPlanet is a huge resource that contains everything you need to know about user experince.
- Ray Wenderlich is a one of the biggest iOS communities out there. They have a lot of free content as well as paid books, videos and tutorials. The quality of the material is one of the best that you can find.
- Designing the schema of Realm effectively, and other Realm tips
- Correct way to retrieve a single object from Realm database
- What are Primary Keys?