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!