Here’s a handy page for all the “Tools of the Trade”.
These are the tools which you need to get started with iOS programming.
Xcode: This is the free IDE (integrated development environment) provided by Apple and it’s where you write your Objective-C code to build your app! This is a required tool!
A Mac: You’ll need a Mac to run Xcode. If you don’t have access to a Mac through a friend or a computer lab, you can look into buying a used Mac Mini for about $300 on eBay or Craigslist. A new one will cost you around $569.
MacStadium.com: Are you a PC user? If so, you have a couple of options too. MacStadium is a service that allows you to “rent a mac” for a small monthly fee. You’ll be able to try your hand at iOS development without investing in a Mac up front.
Virtualization: Another option for PC users. You can run virtual machines using virtualization tools like VMWare player. Essentially, the tool virtualizes a Mac computer so that you can run OSX inside of a window on your Windows desktop. There are guides like this one to install OSX on your virtual machine however I’ve never done this myself. Some of my course members have gotten this up and running.
Apple Developer Program: This is only required if you want to publish apps to the App Store. It also gives you access to beta SDKs and the developer forums.
iOS App Programming For Beginners
If you’re planning to learn via reading a book, I’d highly recommend getting some hands-on practice while reading it (my experience here). Most technical books will provide lots of examples and you’ll retain the most if you practice what you’re reading along the way!
How To Make iPhone Apps With No Programming Experience: While technically not a book, I wrote this short article series as a crash course on how to make an iPhone app. I hope that you’ve given it a try!
Ray Wenderlich’s Tutorials: I can’t say enough good things about these tutorials. I’ve learned a ton from them and believe me when I say that there are more tutorials on this site than you can read! Check it out!
AppCoda.com: Another great place to learn iOS programming for free! Simon’s tutorials are easy to follow for beginners and they look amazing!
iOS App Programming For Programmers
If you’re already familiar with another programming language, transitioning to Objective-C won’t be as hard as you think!
Stanford iPhone App Development videos: Great set of lectures on iOS programming but it assumes that you have object oriented programming knowledge. This set of videos is perfect for someone who is trying to learn iOS coming from another programming language.
WWDC Session Videos: Here are all the recorded sessions for Apple’s 2014 World Wide Developer’s Conference where they introduce many new features of iOS7 and Xcode 5 and show you how to use them.
iOS Games Programming
Apple has a framework called Sprite Kit which enables you to build games for the iPhone much like app building has UIKit. You can re-use concepts you’ve learned in app programming such as objects, methods, properties, views and view controllers however there are some differences which is why it has it’s own section.
Sprite-Kit.com: This site aggregates a lot of Sprite Kit tutorials all over the web. It’s a great one stop shop to browse Sprite Kit tutorials!
iOS Games by Tutorials: This is the book I bought to learn Sprite Kit myself! The team over at RayWenderlich.com have really made a bang up product. Well worth the $54 I paid for it! However, you need to know Objective-C first so it may not be for the absolute beginner. The book points you to some resources to learn Objective-C first if you don’t know it.
Apple Sprite Kit Documentation: This is the official documentation for Sprite Kit.
Tools For iOS Games Programming
In the past, there used to be a lot of extra tools for iOS game development such as Texture Packer and particle designers but since Apple released Sprite Kit, they’ve also integrated some of those functionality into Xcode itself (for example, Xcode now has an integrated particle designer).
Spline: Spline is a piece of software that allows you to use a visual editor to make 2D skeletal animations of your sprites. Then you can export the art assets and Spline generates the code for the animations for you to integrate into your game.
Tiled Map Editor: Tiled is a program that lets you visually build tile maps which you can then import into your game to use. Tile maps are often seen in games with top down or isometric views such as map based war games or turn based strategy games.
Texture Packer: Texture Packer allows you to improve your games load times and memory usage by “packing” a whole bunch of assets into fewer sprite sheets.
I can’t stress how important the design and user experience of your app is. If you’re serious about creating the next popular app, then it’s worth considering to hire a professional designer. Otherwise, it’s still very useful to learn some basics of UI design via the resources below.
Human Interface Guidelines: This Apple resource contains documents for transitioning your app UI to conform to iOS7 guidelines, the iOS Human Interface Guidelines (a must read!), and UIKit User Interface Catalog. Even if you’re not planning to do any design yourself, I would highly recommend reading the iOS Human Interface Guidelines!
Design+Code: Meng is an excellent designer/developer and is a prominent figure in the Sketch community. I’d recommend his book if you’re keen on learning principles of app design! I’ve used it myself to redesign my app.
Hack Design Course: This is a free course to teach programmers the skill of design. There’s one lesson per week and these lessons are prepared by a variety of industry experts. I highly recommend you check this out if you’re interested in picking up design!
If you’d like to focus on development and leave design to the experts, then an option for you may be to look at the following places to purchase fully baked designs ready to be integrated into your app.
UpWork: Thinking about outsourcing the design of your app? UpWork has many freelancers available to handle your app design. It’s free to use and you can browse peoples portfolios to find a designer whose style aligns with the design you’re looking for.
Tools For Testing
Testflight: This tool is a no-brainer. Testflight allows you to distribute your builds to your group of testers very easily. No more sending app bundles through email or plugging your device into your laptop to install a build. All you need to do is upload your build to Testflight and tell your group of testers to launch the Testflight app on their device and download it from there. Best of all, it’s free!
Google Analytics For Mobile: To be honest, I’ve never paid for any analytics packages so I’m going to list the most popular free ones. Google Analytics for mobile remains popular and they also have an iOS SDK that can easily be integrated into your app.
Flurry Analytics: Flurry analytics is another free mobile analytics library that’s easy to integrate. Just pop their SDK into Xcode and you’re off to the races!
Localytics: Localytics has a free tier but you can pay for more features or more data points.
Monetizing Your Apps
AdMob: Google owned AdMob is a popular choice to monetize your apps with. However developers rarely just rely on one network anymore so if the first ad network fails to fill the spot, another ad network can step in to monetize.
AFNetworking: AFNetworking is an extremely popular networking library that goes above and beyond the standard offerings. Features include built in caching, detecting network conditions and more. There’s a great tutorial on how to use this library on Ray’s site.
Tools That Save Time
Prepo: This handy little tool will help you create all your various app icon sizes as well as resize your retina graphic assets down to the 1x version via a simple drag and drop interface.
MockUphone: If you ever needed to make product mockups to showcase your app, you’ll know how much effort it is. This web app will allow you to upload your app screenshot and it will render it inside a realistic iOS device frame of your choice. Then you can simply download a zip file of your mockups. Easy!
I really want to thank you sir for your effort of teaching begginers like us about ios programming. I’ve been following u on your youtube channel. And im really putting so much time to follow every lesson. Your explanations and instructions are very clear. Sometimes I would really want to skip work just to follow each lesson. Thank you and you are really GOD send.
Thank you for the list of resources. Sir have you seen the ios Programming: The big Nerd Rance 3rd edition” Im currently reading it, though it’s a little bit outdated.. If you’ve seen the book, please let me know what is you opinion on it.. Thank you
Hey Chris, you know what? That was originally the book i wanted to list in my resources because it is the best one out there. However, the only reason i didnt is because of the fact it’s a little bit dated. If there’s a new edition, that is the one i would recommend for sure!
It would still be very useful for the foundational knowledge that hasn’t changed because they do a really good job of explaining things.
I just want to tell you that you’re awesome dude. I was getting so sick and tired of old out-dated videos and monotone narrators (ahem, Lynda.com!) that I was getting pretty frustrated just trying to get iOS dev down… I’m a seasoned programmer but was unfamiliar with xCode and the app dev workflow, but you seriously rescued me man. And the resources you posted above are quite helpful as well. You explain things and move through your tutorials at the perfect speed whereas most tutorial videos move so slow its unbearable, and you focus on telling the viewer exactly what he needs to know and you don’t get sidetracked with shit that makes noobie heads spin. Anyway, just thought I’d let you know that I really appreciate what you’ve done. Keep up the great work man.
Hey Dan, thanks a lot man 🙂 I can’t fathom that my material would be better than stuff from large companies but I really appreciate the feedback. My goal is just to get better and better at explaining things. At first I used teaching as a way to reinforce my own learning but I’ve discovered that I really like it. Again, I really appreciate you taking the time out to give me that feedback!
Is it okay to just download xcode on a windows 7 or do i have to use MacBook?
Unfortunately you need a mac but i’ve heard that people can install vmware to run a virtual mac on their PC. Apparently you can run xcode from the virtual mac. That might be an option for you but i’d suggest to do more research into it! Thanks for commenting 🙂
I’ve also learned about something called macincloud.com that you can use to “rent” a mac virtually
Would you happen to know the correct setting to develop apps for the iPod Touch? Would you have any suggestion about programming apps for the iPod Touch?
I am very new to xcode development though and I did see selections for iPad, iPhone, and Universal setting but not specifically to the iPod Touch.
Thanks for all the great videos!
Choose iPhone. It will run on iPod Touch but you just won’t have certain phone capabilities.
Hello Chris and thank you so very much for the invaluable resources you have given us!
I have a question though, for someone with a very basic “understanding” of what programming is (I dont know any language), how long you think it would take to learn how to develop an application that serves as some sort of “business card” with portfolio, contact form, etc… ?
Again, thanks in advance for your help!
Hello Roger, it wouldn’t take too long at all!
Even going through my 9 episode basics series, you’ll learn how to create an app which has a couple of views and you’ll learn how to put labels for text, images and a map on the view. And if you need to have links in the app which would launch safari and go to a specific link, that would be easy too!
That could serve as a “business card”.
The BASICS series is about 2 hours of video in total and targeted at non-programmers. You can get to it from the top link “Start Here”.
Hi, I would like to have your e-mail ID. I am subscribed to your ‘youtube’ channel. Saw some of the videos…excellent and informative ones. Have some doubts on coding.
Hey Emmanuel, thanks for your support! If you have any questions related to following my tutorials, please let me know and I can help where I can!