This page contains some personal book recommendations covering Cocoa and iOS Development (some affiliate links).
This book came highly recommended by a number of people and reminds me of another book on my bookshelf - Effective Objective-C 2.0 by Matt Galloway in that it is a series of articles loosely organised around seven main themes. Oh and it includes over 70 videos if you prefer to learn by watching rather than reading.
It is not a learn Swift book (check Paul’s other book Hacking With Swift for that). What it will do is help you progress beyond the basics to a deeper understanding of the Swift way to do things (a free update to Swift 3.0 is planned). You can read this cover to cover but it is also great to dip into when you are struggling with a topic.
The seven chapters cover Syntax, Types, References and Values, Functions, Errors, Functional Programming and Patterns (including protocol oriented programming, MVC and MVVM).
Swift Algorithms & Data Structures
The list of algorithms and data structures that it covers is long and organised as a series of essays:
- Big O Notation, Sorting, Linked Lists, Generics, Binary Search Trees, Tree Balancing, Tries, Stacks & Queues, Graphs, Shortest Paths, Heaps, Traversals, Hash Tables, Closures
Each essay is concise and easy to read with links to related Wikipedia articles if you want to dig deeper into theory. What makes it interesting if you are learning Swift is that the code introduces you to some common Swift features such as generics and optionals in a way that feels less contrived than in many Swift books. If you learn by seeing practical examples this approach will be of interest to you.
Swift Programming: The Big Nerd Ranch Guide (2nd Edition)
Authors: Matthew Mathias and John Gallagher
Published: Dec 15, 2016
Website: Big Nerd Ranch
The free Apple guide to the Swift Programming Language is a good starting point but if you want a little more guidance you cannot go wrong with The Big Nerd Ranch (BNR). This is a thorough coverage written in the easy to read style of all BNR books. It makes good use of playgrounds with frequent exercises to test your understanding.
The five sections cover getting started, the basic language, collections and functions (and closures), enumerations, structures and classes and the difference between value and reference types. A section on advanced Swift covers protocols, error handling, extensions and generics. The final section looks briefly at an OS X and iOS application and Objective-C interoperability. This is a book about learning Swift though so if you want to learn iOS you need to look elsewhere.
Note: The second edition of this book has been updated for Swift 3.0 and Xcode 8.
objc Advanced Swift
Authors: Chris Eidhof, Ole Begemann and Airspeed Velocity
Published: Version 2.0 (September 2016)
If you have been using Swift for a while and want to dig a little deeper this book is an excellent next step. If you read any of the objc.io articles published monthly up until May 2015 you will have some idea what to expect. This book picks up where the introductory books stop and explains how and when to make use of the advanced features of Swift.
The book has chapters covering Collections, Optionals, Structs and Classes, Functions, Strings, Error Handling, Generics and Protocols. The book ends with an example of wrapping a C library and interoperability. It has been fully updated for Swift 3.
objc Functional Swift
Authors: Chris Eidhof, Florian Kugler and Wouter Swiersta
Published: Version 3.0 (December 2016)
This book is an interesting companion to the other books on Swift. It will not teach you Swift but it will teach you how to think functionally when writing Swift. It is hard to learn Swift without seeing mention of functional programming. The authors try to demystify the topic and show how the ideas can help you write better code.
What I like about this book is that the authors go easy on the terminology. So there is a chapter on functors and monads but it is at the end of the book and not fundamental to understanding. Instead they introduce topics with a series of case studies that show for example why avoiding mutable state can lead to better code. Highly recommended once you have the basics of Swift under control. As you might expect it has been fully updated for Swift 3.
objc Core Data
Authors: Florian Kugler and Daniel Eggert
Published: Version 2.0 (December 2016)
You know how it is, you wait for ever for a new book on Core Data and then two come along together. Luckily they are both good. The first is again from objc.io and given the other books they have published it will not surprise you that they make extensive use of Swift language features such as generics, protocols and extensions when using Core Data.
The book introduces Core Data through an example app before deep diving into the framework. The third section is an interesting look at the difficult topic of synching Core Data with a network service like CloudKit. Finally they cover some advanced topics such as searching, sorting and performance.
It has been updated for both Swift 3 and the
NSPersistentContainer introduced in iOS 10.
Core Data in Swift
Author: Marcus Zarra
Published: June 15, 2016
Pragmatic Programmers has taken an interesting approach with the latest update to a favourite book on Core Data. The trend seems to be for new books to use only Swift and abandon Objective-C. Here you get to choose from a third edition of the book Core Data in Objective-C or a new edition Core Data in Swift.
The content for both books is the same the only difference is the language used for the example code. You can read my previous review of the second edition. This version covers changes for iOS 9 and OS X El Capitan and is still an excellent introduction to Core Data. Step by step Marcus walks you through building a Core Data application - the sample code is available for download. As with the second edition the focus is iOS first with a chapter towards the end on how to add a desktop version.
Cocoa Programming: For Mac OS X (5th Edition)
Authors: Aaron Hillegass, Adam Preble and Nate Chandler
Published: Apr 14, 2015
Website: Big Nerd Ranch
The last few years has seen an explosion of books on iOS and now Swift so it is great to see The Big Nerd Ranch giving Cocoa development on the Mac some much needed love. If you are an iOS developer who is curious how to create a Mac application this book should help.
The book has lots of examples and exercises to walk you through the core techniques for building Mac apps. Many of these concepts, like Auto Layout and Storyboards will be familiar to iOS developers. The content and code examples assume OS X Yosemite (10.10), Xcode 6.3 and Swift 1.2 (there are three chapters covering the basics of Swift) but I had no problem trying the examples with Xcode 7 and Swift 2.2.
If you are looking for help to develop your first Mac application this is a great book to get you started.
iOS Core Animation Advanced Techniques
Author: Nick Lockwood
Published: Aug 13, 2013
Website: iOS Core Animation: Advanced Techniques
If you want to understand and exploit Core Animation this is the book to read. It explains the underlying concepts better than anything else I have read and then gets into advanced animation techniques as well as practical tips on how to measure and fix performance issues. Read my full review
Effective Objective-C 2.0
Author: Matt Galloway
Published: May 20, 2013
Website: Effective Objective-C 2.0
A great reference book for those that want to master Objective-C. The book is organised into 52 separate articles organised loosely around seven topics (Accustoming Yourself to Objective-C, Objects, Messaging, and the Runtime, Interface and API Design, Protocols and Categories, Memory Management, Blocks and Grand Central Dispatch, System Frameworks). Read my full review
Cocoa Design Patterns
Authors: Erik M. Buck, Donald A. Yacktman
Published: 1 Sep 2009, Addison Wesley Professional
This book is highly recommended to both iOS and OS X developers who want to understand common Cocoa design patterns. It has a detailed discussion of the Model View Controller design pattern as well as many other fundamental Cocoa patterns and best practises. Once you have grasped the basics of Cocoa and Objective-C this is the book to read to understand why Cocoa works the way it does. You can also read my full review of this book.