Filed under: Features, How-tos, Developer, iPhone
iPhone Dev 101: Introduction
Where do I start?
If you already have an Apple ID (either from iTunes/MobileMe/.Mac/etc.), then the first place to start would be to join the iPhone DevCenter. The basic (free) access will allow you to download the SDK (Software Development Kit), look at documentation, download example code, and test your applications in the iPhone Simulator (a Mac application that emulates the iPhone OS).
You will not be able to test and debug your application on your actual iPhone or iPod touch hardware, however. For that you will need to purchase a paid development membership.
Once you attempt to sign in to the DevCenter with your Apple ID, you will be presented with some terms and conditions that you will need to accept. Once you accept them, you will be taken to the main DevCenter -- this is the place where you will be able to download the SDK and access some other important information about iPhone development.
Read on to learn more about iPhone development.
Should I become a paid member?
Apple offers two levels of paid memberships for the iPhone developer program. The Standard program is $99, while the Enterprise program is $299. What's the difference?
The standard program gives you the ability to create both free and commercial applications for distribution on the iTunes App Store. The Standard program also gives you full access to the iPhone DevCenter, the ability to test your applications on either an iPhone or iPod touch, access to search and submission rights in the Apple Developer Forums, and distribution of your applications via the Ad-hoc method.
If you are looking to develop applications for use within a particular company (meaning you will not be distributing via the iTunes App Store), then you might take a look at the Enterprise program. This program will give you the same level of access as the Standard program, except you trade off iTunes App Store access for Internal ("In-house") Distribution -- which will allow you the ability to distribute your apps via e-mail, download link, etc.
Both forms of the iPhone dev program give you access to code-level technical support for your applications. This means that you can send Apple your project (Xcode project) via e-mail and have them help you with errors that you might run into.
For these posts, we will be focusing mainly on the Standard Development Program; if you will be joining the Enterprise Program, I highly suggest taking a look at the documentation available on the DevCenter as well as in the Apple Developer Forums.
You can find more information about the different developer memberships available on Apple's website. I would suggest playing around with the SDK before you join any of the iPhone development programs -- this will allow you some time to warm up to coding on the iPhone. Purchasing a membership only takes a couple of weeks to set up.
Look for my next iPhone Dev 101 post in which I'll discuss the iPhone SDK, and the applications that comprise it. If you want me to cover a specific topic on development for the iPhone, feel free to let me know in the comments.

Get a WordPress.com Blog
![TUAW [Cafepress]](http://www.blogsmithmedia.com/www.tuaw.com/media/tuaw-cafepress-promo.png)


Reader Comments (Page 1 of 2)
dvmetz said 9:18AM on 1-20-2009
I would like to start developing for the iphone but have never coded before. Are there resources that can get me up and running quickly or am I dreaming here?
Thanks for your time and input.
Reply
Eric said 9:24AM on 1-20-2009
Same situation? any ideas?
Dieter Houthooft said 9:33AM on 1-20-2009
You'll need:
A course in general programming
A course in Objective-C
A course in iPhone development
For the last two items you can find some links on http://developer.apple.com
Also, a great source to learn from are open source iphone apps like http://gorillas.lyndir.com/trac
Jeff Clark said 11:58AM on 1-20-2009
You can make iPhone content without learning Objective C by using VixML
vixml.com
Kuy said 9:45PM on 1-20-2009
I recommend building web apps first. It's a different model and has its limitations, but Javascript was designed for people like you who don't necessarily have the engineering/CS background to write conventional applications. I guarantee you'll be less frustrated by JS development versus Obj-C. Besides, you don't need the SDK or a dev certificate to do it.
-Kuy
mike said 9:52AM on 1-20-2009
How about a video of creating a very basic app and what's involved? Or does creating even a one function app take hours? Would be useful for those looking to get started what they might be getting into.
Such a thing probably exists somewhere, if so post a link =)
Reply
ncho said 11:33AM on 1-20-2009
here's a how-to video:
http://pragprog.com/screencasts/v-bdiphone/writing-your-first-iphone-application
it isn't free though...
jstarrdewar said 9:42AM on 1-20-2009
I'm in the process of learning and I decided to start with cocoa programming third edition, which really helped demystify a lot of the concepts in the various online iPhone tutorials. It isn't a particularly gentle introduction to programming though. If you know how to use flash, "Learning Actionscript 3.0" is a very gentle guide with a good OO intro, and it's easy to see how the gui concepts translate which helps a lot.
Reply
Vinod Ponmanadiyil said 9:43AM on 1-20-2009
If you don't have an iPhone developer Program subscription, you still can unofficially develop and deploy applications on a real iPhone. I have a small tutorial here:-
http://www.vinodlive.com/2009/01/16/how-to-deploy-an-iphone-application-without-an-idp-membership/
Reply
chrism238 said 10:29AM on 1-20-2009
And if anyone's interested in developing applications with traditional Unix development tools (e.g. just vi, gcc, make, and ssh) then I have a minimal HOWTO here.
chrism238 said 10:31AM on 1-20-2009
Ooops, no URL - http://www.csse.uwa.edu.au/~chris/iphone/howto.html
Max said 11:10AM on 1-20-2009
Hey, For all those people asking "I've never programmed, is it easy?" etc.
Well here's the answer: Objective-C is based off of C, so for instance I knew C++ when I started Obj-C, and all the logic type stuff is the same (methods, basically everything to do with OOP)
I believe you need that groundwork before learning Obj-C because it's a little harder, even the fact that it has interface builder and all that. The best way to learn is to get the basics in C (for a month or whatever) in an IDE that is really simple, and just programming text based programs (which will help you learn how more complex programs work) Then slowly ease into Obj-C. Hope that Helps!
-Max Tkacz, Head of Programming, Polyhedron Group.
Reply
Mark Johnson said 12:17PM on 1-20-2009
There are some great iPhone programming books just out, here are the best:
http://www.markj.net/iphone-development-programming-books/
Mark
Reply
Brad Zimmerman said 9:42AM on 1-22-2009
Mark: does "iPhone in Action" give enough of an intro to Objective-C for the no-programming-experience-whatsoever beginning programmer? I already have access to (through my workplace) Beginning iPhone Development but one of the assumptions the writers made, no fault against them, was that the reader was already somewhat familiar with Obj-C and programming in general.
I, like others, am interested in learning Obj-C and learning to program for the iPhone. I don't mind if it takes "quite awhile" to learn Obj-C; I have no desire to get rich quick via the App Store. I just would like to do more with my iPhone and it is the sole thing I am actually *interested in* programming for.
oliver hart said 2:37PM on 1-20-2009
You should add that the iPhone emulator is only available to machines running leopard. No help for us tiger folk.
Reply
Matt said 3:04PM on 1-20-2009
A few notes here:
1) I feel it's a necessity to constantly test your app on the actual device, as the Simulator can be misleading. For example, I'm working on an app that has to handle large amounts of XML data. In the simulator, it processes super fast, however on the iPhone it was painfully slow. It's important differences like that which cannot be allowed to go overlooked.
2) If you've never written a line of code before, iPhone programming is not the place to start. It's tempting because of how intriguing it is, but the reality of it is that it's not an easy language to pick up. I've been programming PHP and JS for 5 years now, and it took me a solid 3-4 months on my own to get objective-c down. I'm not saying it's impossible, however you're throwing yourself into the lion's den.
I don't mean to sound negative, rather quite the contrary... It's good to be excited about wanting to learn, however you also have to go about it in the right way, else you'll find yourself frustrated and giving up!
http://www.mndcreative.com
Reply
JimBuzbee said 3:52PM on 1-20-2009
I just wrote an article dealing with how I wrote my first iPhone app:
http://www.smallnetbuilder.com/content/view/30712/87/
Reply
Ron said 4:54PM on 1-20-2009
Thanks for the post, I'm looking forward to the continuing series.
If you could add a quick note to just explain how to make a web app or web page install as an iPhone application, that would be a great start for a lot of people! (Although I am sure Apple has some example apps, it would be great to read a quick overview without having to install all of the tools first).
Reply
OlsonBW said 5:24PM on 1-20-2009
Programming in C, C++, Objective C, etc., all are setup like some Rube Goldberg device which a lot of unnecessary complexity.
It's ridiculous that a lot more stream lined method for creating complex programs hasn't been developed yet. Heck, you can't even create an easy iPhone app without spending 90% of your time doing things have nothing to do with the actual code of what you want the program to do.
Visual Studio isn't it either.
Programming today is stuck in what I call the pre-Model T stage.
Programming is like having to set the magneto, set the advance, set the choke, then crank start the car. Nobody average person in the 1930s, let alone today, would stand for that for a normal car that has to get them around town.
Yet we still put up with this today with programming. I know it won't be easy. It's as big and as hard as writing an operating system. We need someone to stand up to do this and create a revolution in programming. We need compilers that figure out the redundant boring parts of programming.
There is a reason why we don't program in assembler anymore. Besides not being able to run on different kinds of CPUs, it was too hard to modify code.
It's time to take the next step. I just wish I was up to the task to start and lead it. I'm not. Someone else is. I just don't know who.
Reply
Kuy said 9:41PM on 1-20-2009
There's a very good reason to limit the art of software development to those who can practice it well - quality. If simply anyone could develop software with no regard to end-user experience, support or sustainability then we'd end up with an endless desert of mediocrity which would devalue the entire computing experience. If you don't believe me, do a deep dive into the Linux world and see what you discover.
I've spent years trying to solve the very problem you described until I realized that the real problem is to give people who can _already_ code well the tools to bring better quality products to market faster. .Net has the wrong answer here - it brings masses of poor quality code to the world faster, which is not what we need. Apple's solution is therefore pretty accurate.
I guess I just countered your soapbox with a bigger soapbox :-p
Nonetheless it's good that Cory is at least showing people what's involved in iPhone app development.
-Kuy