I’ve often been asked by people about where to start with iOS programming, whether they be co-workers, colleagues in the same line of work at other companies, or even total strangers who happen to see me happily working away on my personal projects in Xcode. Some rather naïve people assume that I learned from a book, still others even think I took a class to learn all of this! I can say definitively that it’s in my opinion that to be a great iOS developer, you just need to write apps, and lots of them. Experiment, try different things out, and more importantly, buy a few really good iPad and iPhone apps so you can see for yourself the design patterns that make good apps, and those that make poor apps.
More than that however is knowing how to implement tiny techniques. It’s the tips to get you started on animations or laying out UITableViewControllers, or perhaps how to do that tiny bit of custom drawing you need. It’s also the libraries and 3rd-party modules that fill in the gaps in Apple’s SDK, such as handy progress indicator alert classes, or easy-to-use async HTTP libraries. Knowing a few key points can take you a long way toward building your first few apps, and in the process you’ll learn more than if you were to take a class.
I usually keep my bookmarks organized using Delicious.com, being one of their early adopters (back when their domain was del.icio.us). Check my iPhone tag on Delicious to see my full list of links that I found bookmark-worthy. For a more decisive list that isn’t sorted chronologically, here’s my breakdown of some of the better sites to find information on iOS mobile development.
- OpenAL sound on the iPhone
Introduction to playing sound using OpenAL.
- Finch – OSS sound engine using OpenAL
Convenient sound engine that handles the OpenAL boilerplate code.
- iPhone Core Audio Part 1 – Getting Started
Tim Bolstad’s first in his three-part series on Core Audio on the iPhone.
- iPhone Core Audio Part 2 – Setting up the AUGraph
Second installment from Tim Bolstad on Core Audio.
- iPhone Core Audio Part 3 – Audio Callback
Final installment from Tim Bolstad on Core Audio.
- Core Audio Brain Dump
Excellent brain-dump from a Core Audio guru on pitfalls and tips on using Core Audio.
Data & Databases
- Core Data One-Line Fetch
Easily fetch data from Core Data without a lot of excessive boilerplate code.
- Drawing gloss gradients in Core Graphics
How to draw buttons with shiny gloss gradients.
- Fun shadow effects with custom CALayer shadowPaths
How to use shadows to make fancy effects (disclaimer: this is one of my own posts).
- Resizing a UIImage the right way
How to resize and scale an image without all the gotchas.
The UI library used in the Facebook and many other apps. It certainly has its place and can make developing the initial release of an app quite a lot quicker. Certainly it’s useful for developers who think in terms of arranging an app using URLs.
If you deal with HTTP connections to the outside world, this library is an absolute must-have! It is far easier to use than Apple’s default support, and this package also includes a number of helper classes for dealing with Amazon S3, Rackspace Cloud, form posts, bulk / queued uploads, and more. I can’t recommend it enough!
Hardware-accelerated 2D game framework, based on OpenGL. Most games (e.g. Angry Birds, Trainyard, etc) use this.
One of the many JSON parsers for iOS.
Library for making it easy to write parsers in Objective-C.
- Facebook SDK for iOS
The official library for interacting with Facebook.
A graphing and charting library for iOS.
This alternative to the standard UISplitViewController adds more behaviours and patterns than the standard controller provided by Apple supports.
- NSLog() drop-in replacement
Macro to easily disable all log messages on “Release” builds.
- Prefix.pch macros to replace NSLog and NSAssert
These macros are convenient drop-in replacements that allow you to have more control over logging and assertions.
- Singletons, AppDelegates and top-level data
This article covers a fantastic macro for easily creating singleton classes using just a few lines of code. This is the first thing I pull from my developer’s toolkit every time I start a new project!
- XCode Tips And Shortcuts To Improve Your Workflow
Great consolidated tips on which keyboard shortcuts you might use as a developer on a day-to-day basis.
- Samples of Fonts Available on the iPhone
This handy list gives you a visual feeling for which fonts are available on the iPhone/iPad, and what they look like.
- Debugging BAD_ACCESS with NSZombieEnabled
Tips on how you can easily track down crashes.
- Apple’s Instructions on minimum terms of service / licenses
Apple has a set of minimum terms and conditions your license must cover if you choose to use a custom license.
- Apple’s Default/Standard EULA for iOS apps
If you choose to accept Apple’s default EULA for your app, here is the license your user is accepting, and the terms that you as a developer must support.