My name is Todd Grubbs. By day I'm a Business Technology Consultant for a Fortune 50 company. In my spare time I'm teaching myself iOS development. A year ago I had never programmed before. I had never owned or even used a Mac for more than an hour. In December of 2010 I purchased my first Mac, downloaded Xcode and the iOS SDK, and started playing. This is one of my favorite things about the iOS platform. There's almost no entry barrier to get started developing apps, and there are so many resources out there to learn how. Below is a list of resources I used to teach myself how to program and develop iOS applications. I've also put together a short list of tools that I use to develop my apps. Hopefully this will help jump start other new developers that are just getting into iOS development.
- I watched the two introductory computer science classes from Stanford on iTunes U. Programming Methodology and Programming Abstractions. This gave me a solid understanding of the principles of object-oriented programming and design. These are taught using Java, so these first two courses are great for iOS developers and Android developers.
- I watched a third Stanford class, taught by Paul Hagerty, Developing Apps for iOS. This gave me an understanding of the iOS SDK, developer tools, the Model-View-Controller design paradigm, and the application life-cycle on an iOS device.
- I read Cocoa and Objective-C, Up and Running. This book is an introduction to Objective-C with an emphasis on learning Cocoa, Apple's own API for Mac OS.
- I read several tutorial blogs on how to develop games using cocos2d. Ray Wenderlich has an excellent tutorial site dedicated to that. Cocos2d is an open source framework that makes developing 2d games much easier for both new and experienced developers.
- I read two more books that focus on game development using Cocos2d. Learn iPhone and iPad cocos2d Game Development teaches you all you need to know for utilizing cocos2d section by section. Learning Cocos2d A Hands-On Guide to Building iOS Games with Cocos2d, Box2D, and Chipmunk walks the reader through creating an entire game from beginning to end. Both are excellent resources.
- I watched the WWDC videos from 2010 and 2011. These are great resources for learning the new API's that Apple introduces with each new OS release. You must be a paid iOS developer to access these videos in iTunes.
- Xcode - This is the main tool used for creating iOS apps. It includes the Mac OS SDK as well as the iOS SDK. It also comes with several other tools that I haven't had time to dive into much. Instruments is something I heard other developers praise a lot for finding memory management issues.
- Inkscpae - This is a vector graphics editing program. I use this to create and edit the graphics for my iOS applications. (requires Apple's X11/Xquartz 2.3.4 or higher) I used this to create the game background, buttons, pieces, and textures for Flag Wars.
- Pixelmator - I've started using this more and it has replaced Inkscape for most image editing tasks.
- Tiled - This application is used to create 2d tile maps for tile-based games. I used this to create the black grid you see on the Flag Wars game board, as well as the meta-data about those tiles, like whether or not a tile is collidable.
- Zwoptex - This appliction helps you create images that can be easily imported into Tiled. These images are the underlying tile sets that you use in Tiled to create your levels.
- Garageband - I use this application to create basic sound effects.
- Navicat for SQL Lite - I use this application to interact with sql lite databases created in core data
- Remember the Milk - This is a web-based to-do manager. This is how I track bugs, future enhancements, and other development related tasks.
- iMove - I use this for creating app preview videos for the App Store.