Skip to content

Learn the the good parts of iOS as fast as possible

Notifications You must be signed in to change notification settings

davidbakertv/iOS-TheGoodParts

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

This list comes from keeping track of what has been useful and not useful from the past few years of learning iOS on my own. I'm compiling this to be a sort of reference guide for the students in my upcoming class at The Flatiron School.

This is meant to get you up to speed with development from no prior iOS experience. None of this covers the basics of computing/development though. I don't really think of Objective-C/iOS as a beginners language and highly recommend the prework for the Web Development course at The Flatiron School if you're completely new to development.

Students learn in a plethora of ways. If you are an auditory learner there is also a ton of great video content from Stanford and Treehouse but their progression is pretty obvious so I didn't create a guide for that. I HIGHLY recommend the Stanford class.

There is an infinite amount of stuff to learn on iOS. This is a list of what I've found to be the most important for almost every app out there. A secondary goal of this prework is to limit the scope of learning before you get started. There really is nothing better than just writing a ton of code. Hopefully this list of resources can get you to writing code quickly.

Structure

This guide is separated out into the different big topics of iOS development. I am including advanced topics here mostly for completeness and for reference down the line.

Flatiron School Students, your job is to go through each section, in order, following just the beginner items. Don't worry about the reference or library items. These are all things we will discuss and use in class. Just the beginner items shouldn't take you more that 40 hours. If you already have prior knowledge feel free to skip sections you feel comfortable with.

The Advanced and Referece/Library sections are for you to use once your feel comfortable with your skills. I really recommend completing all the beginner materials before moving on to the advanced resources though. Once you look into developing apps that require the topics you can return here and find out more information and hopefully some links to start your research with.

Also, each section contains a description of an example app you should be able to make. Feel free to try and make the app with the skills you have. If you have issues with making the app, raise an issue. Hopefully someone will help you out :)

Last, the Learning Objectives are what I expect you to understand after reading the beginner materials. Remember the advanced materials are just for deep dives into topics!

Setup

I tried to use as many free resources as possible but ultimately you have to spend some money. You'll need theBig Nerd Ranch iOS Programming book. It's the book I reference throughout the guide and is truly a fantastic book.

Thoughts

###Breadth of Familiarity This list of resources will not make you an expert by any means. The goal for this guide is breadth of knowledge over depth in any one topic. If you are particularly interested in a topic, feel free to check out the advanced resources and reference material.

The best way to learn this stuff is still to just write a ton of code. In addition to checking out the advanced material on a certain topic, coding up the example apps is a great way to get a deeper understanding.

###Minimum Viable Knowledge Learning the topics in the order given allows you to start writing apps as soon as possible. That's the fun stuff, so I didn't want you to have to read for hours before getting your hands dirty. The goal is layers of quality. After the first section you will be able to write simple apps. Every new topic you learn will give you real skills to enhance your app. This means that if you are struggling with one topic it may be prudent to stay in that one topic and learn more. If you find other resources that helped you learn please raise and issue and I'll include it.

Getting Help

If you are confused on a topic, I doubt you're alone.

Thankfully, there are a few resources available to you. The easiest is using the iOS section on StackOverflow. If the question is about a certain resource here, or about this guide in general please please please raise an issue on github. I'll look into it and hopefully give you a solution that everyone can use.

Contributing

It's pretty simple. Raise a github issue or fork and submit a pull request with your requested changes.

Basic iOS

This will get you going to write a super simple app. It's not going to look pretty, but it'll work.

###App Super simple ToDo list app. It should have a table with todos in it.

###Learning Objectives

  • Understand how to design interactions with Storyboards
  • Building interfaces with Interface Builder
  • Declaring and Synthesizing properties
  • Understand methods in Objective-C
  • Understand basics of ARC and memory management
  • Familiarity with debugging - you'll get better at this with practice

Beginner

  • Beginning Storyboard in iOS 5
    • Learn how storyborads work. This is a great way to get up and running writing an app super quickly
  • Big Nerd Ranch Chapter 1
  • Big Nerd Ranch Chapter 3
  • Big Nerd Ranch Chapter pages 91-100

Advanced

  • BNR Chapter 8

Objective-C

Objective-C is the language of iOS and it is most likely pretty different than what you've done before. To get started you just need a bit of knowledge of Objective-C, but to really master iOS development you need to get a solid understanding of the language. The best Rails developers are also the best Ruby developers. The same is true in the Objective-C/iOS world.

###App Try and rewrite your Todo list using objects and encapsulation.

###Learning Objectives

  • Message passing with Objective-C
  • Comfort with the syntax of Objective-C
  • Understanding basic Objects. Instance variabales, Methods, The super keyword, etc.

Beginner

  • Objective C Primer
    • Apple's awesome intro into the Objective-C language
  • Big Nerd Ranch Chapter 2

Advanced

  • Programming in Objective-C (5th Edition)
    • Yup it's an entire book on Objective-C. It's a great reference book and will make you an expert in Objective-C.
  • Big Nerd Ranch Chapter 27
  • Programming With Objective-C

Object Orientated Principles

The iOS ecosystem relies heavily on a few Object Orientated principles. The beginner items covers the stuff that is somewhat unique to iOS. Going further you will see these patterns everywhere.

###App This is mostly a theory section. Just make sure you fully understand the concepts.

###Learning Objectives

  • Understand the Delegate pattern
  • Understand the protocol pattern

Beginner

Advanced

Core Data

Core Data is a persistent data store. It is not a database. This is seriously one of the most confusing technologies in the iOS ecosystem, but it is something you must learn. In the integrating with APIs section you'll learn even more about Core Data and how to save both locally and sync up to the cloud. Think about all of the apps you use. Most of them can be boiled to down to displaying some data that is synced to a service.

###App Try and save your ToDos locally using CoreData.

###Learning Objectives

  • Understand how read and write data from the NSManagedObjectContext
  • Persistant CoreData to the device using sqlite3
  • Work with CoreData with TableViews
  • Autogenerate, and extend CoreData Model files
  • Generally wrap your head around the moving parts in CoreData. BNR Chapter 16 is great for this.

Beginner

  • BNR Chapter 16
  • Core Data Tutorial for iOS: Getting Started
    • Practical example on how make a Core Data app. Make sure you read all three parts. The NSFetchedResultsController part is super important and how you connect Core Data to UITableViews.

Advanced

Libraries

  • MagicalRecord
    • Library that automates a lot of the common CoreData stuff and implements some best practices.

Reference

Integrating with APIs and Social Media

Nothing exists in a vacuum. Apps are expected to share effortlessly and backup to the cloud. The beginner section has some of the super simple stuff and is all you really need to get started. The Helios tutorial shows you how to create a super simple server side backend for your iOS app. This is really the absolute simlpest possible solution to syncing your app with the internet

I'm purposefully exposing you to the native iOS SDK networking stack before AFNetworking and the other libraries. It's very hard to debug problems with the libraries if you don't understand the underlying technologies.

Also this has an intermediate section just because this topic is so massive. Still stick to the beginner information at first though.

###App Add server side syncing to your ToDo list app. Also try and share todos on Twitter/facebook

###Learning Objectives

  • Ability to set up and use Helios
  • Understand SLComposeViewController

Beginner

Intermediate

Advanced

Libraries

Social Media SDKs

Core Location/MapKit

One of the biggest reasons mobile is such an interesting platform is the ability to use location information. Think how much worse your phone would be without Google Maps, Yelp, Foursquare, etc. Integrating Core Location is actually quite easy.

After you learn how to use CoreLocation you need to learn how to present that data with MapKit. MapKit allows integrated maps into your app. The advanced section gives you some resources to use Google Maps instead of Apple Maps for your integrated map views. Google Maps has some interesting features such as Street View support, but it's very much icing on the cake. Nobody will complain if you just use the standard MapKit.

###App Add the ability to tag a todo with where it should be completed. Like Buy groceries at the grocery store.

###Learning Objectives

  • Use the delegate pattern to receive updates from Core Location
  • Drop pins on a MapKit View
  • Basic MapKit customizatiosn such as switching between satellite and map view.
  • Handle the different events of Core Location such as major change, best accuracy change, etc.

Beginner

  • Big Nerd Ranch 88-92
  • Big Nerd Ranch Chapter 5

Advanced

###Google Maps SDK

Mobile Design

Different screen size and interactions require different thoughts on design. Below are two fantastic resources, but there is always more.

###App Do some mockups with paper and pencil on how you cauld enhance the interface. In the next section you'll actually code them.

###Learning Objectives

  • Familiarity with the "Apple way" of designing mobile apps.
  • Differences between web design and mobile design Beginner

Customizing UIKit

AutoLayout is the new way of defining how your layouts work based on different rotations and screen sizes. You are lucky because you will learn AutoLayout from the very beginning but sadly The Big Nerd Ranch book doesn't include information on AutoLayout because it's an iOS 5 book. I've included supplementary AutoLayout tutorials because of the lack of information in the Big Nerd Ranch book.

Learning how to customize your app's UI is what separates the good apps from the great. Think about all of the apps you use. Do any of them use the standard UI elements? Nope. I bet you barely know what the standard iOS controls look like. If you're interested open up the settings or contacts app.

This is a huge topic and much of what you'll do has been done by others and answered on StackOverflow. After you've read this information and have specific questions search on StackOverflow for answers. Very rarely are you doing something completely unique.

###App Implement your ideas from the design section. You may have to pare down your ideas a bit.

###Learning Objectives

  • Be able to style the color/size of major UITableView,UINavigationView and UITabBar
  • Understand how Views interact with View Controllers
  • Understand the View lifecycle

Beginner

  • Beginning Auto Layout
    • Auto Layout is how you can lay out UI elements with differing screen sizes. This guide walks you through that.
  • Customizing UIKit
    • Some common UIKit customziations and how to do them.
  • Big Nerd Ranch Chapter 24
  • Big Nerd Ranch Chapter 6
  • Big Nerd Ranch Chapter 7
  • Big Nerd Ranch Chapter 9
  • Big Nerd Ranch Chapter 10
  • Big Nerd Ranch Chapter 11

Advanced

  • Big Nerd Ranch Chapter 19
  • Big Nerd Ranch Chapter 20
  • Big Nerd Ranch Chapter 26
  • Big Nerd Ranch Chapter 13
  • Big Nerd Ranch Chapter 15

Hardware

The iPhone/iPad have a pretty cool set of hardware. Let your creativity flow with the different hardware features. This is completely different then what you've done on a computer.

###App Add the ability to add pictures to your app.

###Learning Objectives

  • Use the camera
  • Change hardware behavior based on hardware availability
  • Use the accelerometer and gyro

Beginner

Core Animation

Core Animation allows you to access to graphics card to some awesome animations and transformations without sacrificing speed. The graphics card was designed to do this and it does a great job. With that great power comes great responsibility though. iPhone and iPad users expect fluid animations. Thankfully, many standard animations you are used to seeing are actually built into the iOS SDK and are super easy to integrate.

###App Add in some custom animations. Maybe have a cool strike out animation when you mark a task as done.

###Learning Objectives

  • Understand how the contexts and layers of core animation work
  • Know when to use the correct transitions for different interactions.

Beginner

  • UIView Transition Effects
    • Learn the different ways you can transition form view to view and the reasons why you choose those transitions.
  • BNR Chapter 22
  • BNR Chapter 23

Advanced

Xcode

Xcode is what you develop iOS apps in. A craftsman knows his/her tools. Make sure you know yours. This is mostly for reference. No learning objectives or app progression here, just some great tips!

Advanced

  • 14 Essential Xcode Tips and Tricks
    • After you've used Xcode for a while, here are some extra tips I find useful
  • XVim
    • I use vim on the command line. If you're like me, this will make your life so. much. better

About

Learn the the good parts of iOS as fast as possible

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published