iPhone App Development - Where to Start
Categories: development, iPhone, mac
[Last Updated: November 12, 2008]
How hard could it be, I asked myself. I’ve developed my own applications in Basic and C. I can configure an Apache Server, install and use PHP, MySQL and other server apps. I develop and maintain websites and blogs from my home server. Over the last 15 years I’ve taught myself HTML, PHP, MySQL, CSS and the basics of Java. How hard could it be to develop a small application for the iPhone?
Let’s step back for a moment.
I have a very particular program in mind that I’ve wanted for years. It’s a very simple program - perfect for the iPhone (more on that in future posts). I could whip it up in C or PHP in about a day. I’ve never owned, or even used, an Apple computer of any kind in my some 27ish years of computing. I regard the iPhone App Store as a revolutionary new idea that pries control of mobile device apps from the big-bad telco giants and puts it in the hands of average consumers and developers — where it belongs. I see cloud computing as a very important part of our collective computing future. I want to get in on the ground floor. If my first simple program works out, I want to develop an iPhone app to work with my wishhh.com service. After that, who knows.
So, in August 2008 I registered to to join Apple’s standard developer program, purchased a Mac Mini (subsequently replaced it with an iMac) and set out to develop my first portable application for use on the iPhone.
Piece of Cake for Mac Cocoa Developers
From what I can see at this point in my learning curve, if you have used Apple’s Cocoa language and xCode tool to develop applications for the Mac platform, developing iPhone Apps should be a breeze. Not so much for the rest of us.
Learning Curve for the Rest of Us
Below is a discussion of the hurdles I have had to overcome and the online resources I’ve found useful in my bid to become the newest iPhone App developer:
- Learning to Use the Mac and Leopard: Admittedly this will not be a hurdle for most iPhone App developers. It was for me. I have never used an Apple computer of any kind for more than a few minutes - ever! While I can appreciate the elegance and *cough* ease of use *cough* so often spoken about in the Mac/Leopard OS X world, just using the platform can be an enormously frustrating experience for a died-in-the-wool Windows user (the universal menu-bar makes me want to pull my hair out). But, I’m over that hump and moving forward.
- Downloading and Installing the iPhone App SDK: Everything you need to build an iPhone App is contained in the huge iPhone App SDK. Like everything else on the Mac, installing it as my first Mac App was a bit of a challenge. I had never heard of .dmg files, let alone used one, to download and install Mac apps. With the help of this Mac 101: DMG files are Disk Images explanation, that challenge was soon overcome.
- Object Oriented Programming, Objective C and Cocoa: For 15 years I have been steadfastly opposed to learning object oriented programming ("OOP"). I didn’t need no C++. C was good enough for me. For small developers of small applications, I’ve never seen the benefit of inheritance, polymorphism and encapsulation - I still don’t (though I can see it being incredibly useful for developing large apps with large development teams). But for iPhone App development I don’t have a choice. The only language available to develop iPhone apps is Objective-C (as the name implies, an object, oriented superset of the C programming language). Apple’s proprietary
variant ofObjective-C framework is called Cocoa
- Crash Coarse in OOP, Objective C and Cocoa: Much of my time in the last few weeks has been spent learning, once and for all, the basics of object oriented programming and Objective-C, and Apple’s proprietary Cocoa. While the other hurdles mentioned in this post are challenging, learning the basics of Objective-C and implementing them a real-world program with Apple’s Cocoa, has been, and remains, my biggest challenge.
- Useful iPhone Dev Center Getting Started Documents: The iPhone Development Center website (free to anyone that registers – register here) contains a plethora of videos, tutorials, information, sample code, how-to’s etc. Much of it useful. Much of it not (especially for newbs like me). For those just starting out, the most useful documents/tutorials I’ve found in the walled-garden iPhone Dev Center so far are:
- Object-Oriented Programming with Objective-C: Thank goodness for this document. After a few days I was almost ready to give up until I found this guide. It is written for someone who understand C and needs a primer on object oriented programming. This article explained OOP to me in a way that finally made sense to me. The light-bulb went off when I read the analogy between objects to C structures. If you understand C but not object oriented programming, this document can help you over the hump.
- Introduction to Cocoa Application Tutorial: The next most critical piece to my learning was this Cocoa tutorial. I had initially jumped straight to the various iPhone templates, sample code and tutorials but found myself a bit baffled by them. They all assume a base level understanding of Cocoa, xCode (see below) and Interface Builder (also see below) that I just didn’t have. I decided to first step back and use this tutorial to learn how to build a Mac App using the SDK tools before ploughing ahead with my first test iPhone Apps. It was worth it. In fact, I’ve gone through that tutorial twice. It nicely walks you through the MVC (model, view, controller) design paradigm assumed in all the other iPhone App documentation (see also MVC on Wikipedia), and holds your hand, step by step, through the process of designing and coding your first Cocoa application. Invaluable!
- Learning Objective-C: A Primer: I had read this document at the very beginning of my learning process and was somewhat flummoxed by it. Coming back to it again after digesting the OOP with Objective C document and the Cocoa tutorial (each above), it made so much more sense and is a ultimately a terrific primer once you have a little learning under your belt
- Useful External Documents/Sites: Outside of the iPhone Dev Center, I found the following useful:
- From C++ to Objective C: [pdf] While I never learned C++, as a C programmer this document at least spoke my language and helped me translate much of what I learned in the world of C to the world of Objective-C.
- Objective-C Resource Center: This site contains links to useful Objective C FAQs, tutorials, etc. However, these are of limited use since they all pertain to generic Objective-C and not to Apple’s proprietary
version ofObjective-C framework, namely Cocoa.
- xCode: To apply all the Objective C and Cocoa goodness I’ve been learning, Apple provides a fantastic development tool - xCode. xCode is a multi-facetted development tool used to develop both Mac and iPhone applications. I’ve used a dozen or so application development frameworks over the last 25 years and xCode is hands down the best. If there is anything that will delight you in the iPhone App development process its xCode. It just does what you want a development environment to do. So many of the menial tasks of the past are handled effortlessly for you. I am continually delighted as I use this tool with its deep feature set. Wonderful! For details see the xCode Workspace Guide.
- Interface Builder: Interface Builder (pictured above) is the part of xCode that you use to develop the visual/graphical interface to iPhone Apps - what you see and manipulate on the iPhone as you use iPhone Apps. It took me awhile to figure this beast out. The video version of the ‘Cocoa is my Girlfriend’ tutorial below was helpful as was this part of the more generic Intro to Cocoa Application Tutorial. I’ve quite a bit to learn yet to feel proficient at integrating the fruits of this tool with the underlying code in my application. But this too will come. The Interface Builder user guide is here (again, available only to those who have registered).
- iPhone Simulator: One of the last pieces of the iPhone App development puzzle (before you start testing on an actual device that is) is the iPhone Simulator (pictured above). At any time during the development process you can build and test a version of your iPhone App and run it in the iPhone Simulator. It’s pretty nifty and easy to use.
- Development / Tutorial Books: Apple lifted its NDA restrictions on October 1, 2008. As a result, there are now a plethora of iPhone application development books coming out – See here on Amazon.com
for example. On Oct 30 I put in an order for these two:
The iPhone Developers Cookbook (by Erica Sadun) – All project files/code listings/objects from all projects in the book can be found here. Her EricaSadun.com website provides a forum for readers to discuss the text and ask questions
I received this text on November 13, 2008. As I write this (November 16, 2008) I am a couple chapters in. This book is quite but assumes a solid grounding in Cocoa/Objective-C – still my greatest handicap in this endeavour.
Beginning iPhone Development (by Dave Mark and Jeff LaMarche)
I’ll probably write posts/reviews of these texts once I’ve had a chance to spend quality time with them.
- Online Tutorials: There are several online tutorials that hold your hand, step by step, through basic iPhone application development:
- Your First iPhone Application (Apple’s introductory tutorial). This includes a terrific step-by-step description of the basic bootstrap process. I wish I had read this one a lot earlier than I did. It answered a lot of my initial “what the?” questions. Note: You will need to be logged into the iPhone Development Center to access this.
- icodeblog Tutorials: A computer science student named Brandon at the University of New Mexico has been posting useful iPhone App development tutorials on his icodeblog blog. His forum allows would-be iPhone developers to discuss his tutorials and learn from each other. His tutorials have been invaluable to my learning process.
- Cocoa Touch Tutorial: iPhone Application Example – [video version] (Cocoa is my Girlfriend);
- Other Online Resources: - Hand Picked iPhone Application Development Resources (iPhone Toolbox)
- SQLite Manager Firefox Add-on: Not all iPhone Apps require/use databases. My first simple application does. The iPhone SDK contains, and the iPhone uses, SQLite to handle your iPhone App database needs. If you use Firefox, I recommend this SQLite Manager add-on to create, modify, populate and manage the database tables your iPhone application will need. It is much easier than working with databases via the Mac command line interface. Save the resultant tables in your xCode project directory and, voila, they are available to your iPhone App.
- Testing Apps on iPod Touches or iPhones: I have yet to completley unravel all the mysteries of testing iPhone Apps on my personal iPhone, becoming a certified iPhone Developer, let alone submitting an app for approval and inclusion on the App Store. At a minimum you’ll need to join the “iPhone Developer Program” ($99 for most of us). Paying your $99 does not mean you’ll be automatically approved to distribute your app through the App Store. Frankly, I’m not ready yet anyway. But it will let you test your apps on your iPod Touch/iPhone and allow you to distribute it to up to 100 friends to test as well. The process is described in detail in the Erica Sudan text (see above) and also in this online description:
- iPhone SDK Mobile Provisioning (Ralf Rottman): Soup to nuts description of how to join the iPhone developers program, obtain certificates, test apps on devices, etc.
- - Getting Started with iPhone Development (Ed Burnette): Basic intro into the subject.
When my simulator testing is done I’ll venture down that path and update this post accordingly.
I’ll continue to update this post (or write new ones) from time to time if/when I find more useful iPhone App development resources, blogs, forums and as I learn more about the developer certification and App Store submission process.
I’d appreciate any useful resource suggestions that other iPhone App developers can make in the comments below. In particular, if there are other blogs/tutorials out there like the icodeblog, I’d really like to hear about them.
![[Home]](/graphics/button-home.gif)
![[About Me]](/graphics/button-about.gif)
![[Video Game Law]](/graphics/button-vgl.gif)
![[iMedia Law]](/graphics/button-imedia_law.gif)
![[wishhh.com]](/graphics/button_wishhh.gif)
Del.icio.us 

14 comments
Actually, you don’t need to shell out $99 to get access to those links. The $99 is to join the developer program in order to get the code certificate, test apps on your phone and release them through the appStore.
That’s odd Jason:
I wasn’t able to access the links without first subscribing? I wonder if its a Canada / U.S. thing. Or maybe I missed something. Whenever I navigate to the iPhone Dev Center here:
http://developer.apple.com/iphone/index.action
All the links remain unavailable until I login and I was only able to login after paying the fee. Do you h ave another link that you can provide here where users can access those resources without being loged in?
…Dale
Few things have frustrated me more than having what I feel are great applications for IT, while not having the wherewithal to produce them in the real world. Few things are more encouraging than the 60s-era, share the wealth kind of information provided in this article, and on the iCodeBlog.
I’ve been working on a geo-navigable database of humanitarian, environmental and social justice organizations. The iPhone, and several other gps-enabled mobile devices, make it possible for information in this kind of database to be leveraged in a matter that could radically change how such organizations receive donations and promote their missions.
There are a ton of games written for mobile phones, and the private sector will surely get its butter from the duck, where these new technologies are concern. That’s great. I just want to thank people like you Dale and Brandon, for helping to make these technologies more accessible to some of us tree hugging, bleeding heart, non-tech-types, who may be delusionally hell bent on making this a more fun planet to live on.
I didn’t have to pay to get access either. Just get a free subscription to their developer program, and you’re in! You can download the SDK, develop iPhone apps using Xcode, and test your app with the simulator. You can NOT, however, test your app with a real device or actually sell your app until you are accepted to the paid program and pay your money.
Cocoa is not Apple’s proprietary version of Objective C. Objective C is a language that Apple uses. They’ve developed a framework using Objective C for you to develop applications with, and they call that framework Cocoa.
Thanks Glenn … this kind of sharing and the IT world’s history of open-source co-operation is part of the reason I love IT and the IT community so much.
Henning … perhaps I should have called it their proprietary or inhouse framework rather than ‘version’.
Thanks for the clarification.
Cheers.
I’m with Henning - just get a free subscription and you are in.
I have since paid the membership fee as I now have an application to test and distribute. I eagerly await acceptance to the program.
Jason, how long did it take you to get whatever approval and certification is needed to test your app on your iPhone. So far I received a “we’ll get back to you later” message from Apple after paying my $99 but they haven’t gotten back. So I can’t test anything out on my iPhone yet.
…Dale
Dale,
Good post. I didn’t know about the sqlite plug-in for firefox. I will definitely be giving that a try!
Having been through a similar process (I’m an old C++ developer who drifted into management & wanted to get my hands dirty again), I think your summary is spot on.
A few updates/additions for you & your readers:
- It took me about 2+ weeks to hear back from apple with my acceptance. That was back when the 3G first came out though, so I’m not sure if the wait is getting better or worse.
- Registering for the certificate which allows you test your apps on your personal devices was pretty easy & a process I completed in about an hour. There is a step by step guide available from the portal (once you’re approved):
http://adcdownload.apple.com/iphone/iphone_os_software_preinstallation_advisory/iphone_developer_program_user_guide__standard_program_v2.0.pdf
- Here’s another great tutorial site similar to the iCodeBlog:
http://www.iphonesdkarticles.com/
Dale,
Thank you for your post. I bought my first Mac ever in August and I’m going through the same pains as you are, Dale. Pretty much everything you said I agree with you and I feel we are going though the same pains. I’ve been doing PC development for about 20 years now. I remember my first shareware apps back in 1991 and distributing them through BBS’s back then.
I have never been excited since my first shareware app was sold back in 1991 since then. Until I saw the opportunities with the iPhone and how exciting this is.
Adam:
Thanks for that info! Sorry it took a few days for your comment to make it through moderation. I made a few tweaks to my comment system so I hope more legitimate posts like yours will get through automatically while still keeping the spam at bay. I’ll definitely be checking your links out soon. My law practice has kept me away from my iPhone development for a week. I hope to get back into it soon. I’m starting to think my applicatio didn’t go through because I’ve heard nothing from Apple now in almost 4 weeks.
Thomas:
We are kindred spirits!
> how long did it take you to get whatever approval and certification is needed to test your app on your iPhone?
It was all approved within 24 hours.
And after a bit of messing around to get the certificates all sorted out, my first application is now ‘In Review’ with the nice folks at AppStore.
Hi,
The link
http://adcdownload.apple.com/iphone/iphone_os_software_preinstallation_advisory/iphone_developer_program_user_guide__standard_program_v2.0.pdf
is not active anymore it seems.
I have read lot about other’s experiences with the apple developer program for iPhone. But there is no official document from Apple that clearly states the developer certification process. Please help.
[…] iPhone app development: where to start […]
Mahesh, As requested, I updated the original post to include links to detailed descriptions of the certification process, including this one:
http://www.talentgrouplabs.com/blog/archive/2008/11/10/iphone-sdk-mobile-provisioning-0xe800003a-0xe8000001.aspx
…Dale
Leave a Comment