top | item 2312696

The Complete Guide for Starting iPhone and iOS Development

225 points| withoutfriction | 15 years ago |writings.withoutfriction.com | reply

49 comments

order
[+] stevederico|15 years ago|reply
The Stanford iTunes U Courses should not be overlooked. They do a great job of taking you from crawling to running in no time. I enjoyed doing the homework too, it really increased my learning experience.

Winter 2010- http://itunes.apple.com/us/itunes-u/iphone-application-devel...

Spring 2009-http://itunes.apple.com/us/itunes-u/iphone-application-progr...

Spring 2011 (Starting Soon)-http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

[+] deveren|15 years ago|reply
Where did you find the homework? I've downloaded all of the classes, and slides, but I wondered if I could find the assignments someplace. Of course, I'm assuming that you didn't actually take the course at Stanford...
[+] gregparadee|15 years ago|reply
These are some of the best tutorials around as long as you have the time to watch them and act like you are actually in the class. Greatly helped me while designing an iPhone app my senior year.
[+] kingofspain|15 years ago|reply
It should be noted you don't need a Mac. I've had 2 apps developed, submitted and approved from my makeshift vmware player running on W7. I know others who use Virtual Box. Never ran into any trouble other than wondering why all the keys behave differently!

Yes, it's technically illegal but isn't that the best kind of illegal?

[+] withoutfriction|15 years ago|reply
I did add a point about using a Hackintosh, though it is good that you mentioned about using a VM image of OSX.
[+] marksu|15 years ago|reply
Yes – programming is fun to hop into, but just a heads up: the most difficult process to learn and master is the marketing and promotion part of releasing an app.

I feel that two blog posts linked in this article touches this subject in an interesting way: http://struct.ca/2010/the-story-so-far/ and http://blog.endloop.ca/blog/2010/08/12/100k-in-4-months-a-ni...

That said, I would recommend Corona - http://www.anscamobile.com/corona/ - for anyone wanting to give iPhone app development a shot. Much easier and fun to jump into than objective-c, especially if you want to make games, and still pretty damn powerful!

[+] uxp|15 years ago|reply
It should be noted that the Corona SDK uses Lua on top of Objective-C and is geared for Game apps. If you already have some Objective-C or C knowledge I'd recommend Cocos2d-iphone, which is nearly pure Objective-C, with a little pure C in the rough parts.

Going the Cocos2d route will also help you learn some of the peculiarities of the platform, like memory management and object lifecycle, while giving you enough skills to jump right into pure CocoaTouch.

Nothing against Corona, it has it's place. Bubble Ball[1] was developed with Corona for example.

[1] http://www.pcworld.com/article/216880/8th_graders_iphone_gam...

[+] transmit101|15 years ago|reply
Really not sure I agree with that. Coding is tough, and in my experience developing iOS apps well (and Cocoa apps in general to a lesser extent) is one of the most difficult forms of programming.

And as for marketing and promotion, I'd say even more challenging is coming up with an idea which doesn't need marketing or promotion :)

[+] drpancake|15 years ago|reply
Coming from Python, web development and Android, I found interface Builder to be the trickiest part of iOS to learn. The way it instantiates some of your classes requires you to build up a really odd mental model; I still don't fully understand it after a couple of months.

You're welcome to do it all in code, but it seems to be discouraged by many.

[+] xsmasher|15 years ago|reply
The nib is a data file - XML while developing, binary when shipping - that defines a bunch of views and how to connect them to a particular controller. That's it, that's all. You usually write the controller first, in code, and define certain "outlet" pointers in the interface of that controller.

Now in the nib you say "here are three buttons, connect them to outlets a, b, c." Now when Someone asks the controller for it's view it will create the views and connect the pointers in the manner you requested.

There is "magic" taking place, but no more so than the interaction between HTML and JavaScript in a web page. It may be unfamiliar at first, but not unfathomable.

[+] program|15 years ago|reply
Model View Controller is an odd mental model? It's quite popular right now and I think that it's the best pattern for decoupling user interfaces from the underlying code.
[+] Breefield|15 years ago|reply
This is great! I just started going through Programming in Objective-C 2.0, although I'm not new to programming at all, I am pretty new to C/Obj-C. Good to see it in this guide, reaffirms that it's a good starting place.
[+] xsltuser2010|15 years ago|reply
Is there a similar resource for Android ? I don't currently own one, but this kind of writeup would be helpful to estimate the effort to get into developing first things for it..
[+] withoutfriction|15 years ago|reply
If this guide stays popular on HN for a bit, I will strongly consider (read: will) research it and write one up.
[+] bricestacey|15 years ago|reply
This is just a bunch of links. Can anyone vouch for the author's credibility?
[+] jtheory|15 years ago|reply
Are you talking about the linked article, or HN in general? ;)
[+] philthy|15 years ago|reply
For anyone who wants to fiddle with development and doesn't know any form of C, a company called Revolution Media makes a scripting tool called LiveCode. It is pretty easy to use but I'm not sure how advanced your apps can get.
[+] callmeed|15 years ago|reply
I wouldn't call this a "complete guide" ... seems more like pre-reqs.
[+] mkramlich|15 years ago|reply
The Apple docs already explain this pretty well. Not too hard. It's weird we live in a world of hand-holding comfort and plentiful documentation on almost everything and yet we still create more.
[+] jodrellblank|15 years ago|reply
Not too hard.

That's a tautologically pointless thing to say.

It's weird we live in a world of hand-holding comfort and plentiful documentation on almost everything and yet we still create more.

How terrible we are for wanting a world of comfort instead of superior discomfort and confusion.

[+] jranck|15 years ago|reply
What works for you may or may not work for someone else. I don't think I'm alone when I say that more quality resources on a subject is never a bad thing.
[+] guelo|15 years ago|reply
The fine print for new iOS devs:

If you succeed in overcoming all of the obstacles ahead of you and actually create a worthwhile app on Apple's platform their is a good chance they will screw you over without warning or explanation by blocking your app, yanking your app, changing the rules, calling you a pornographer, randomly charging you new fees, prohibiting whatever it is your app does, changing the hardware you're allowed to use, changing the software you're allowed to use, and many other ways that seem impossibly outrageous right now until it actually happens.

Invest your time and money at your own risk. You've been warned.

[+] cmaggard|15 years ago|reply
Man, there's all these things standing in the way of success! I'd better not even try.

Come on, seriously? There's risk involved in pretty much every venture, and you can't exactly control the actions of outside entities. If I kept avoiding tasks because there was a chance of it being screwed over by someone else, I'd never get anything done.

[+] Zev|15 years ago|reply
Been doing iOS dev for a few years, friends with many others who have been doing the same. Sometimes things suck. But, not usually. How is this any different from relying on Google to "guarantee" a base minimum to dev against… that seems to be ignored by handset makers

All platforms have downsides.

[+] awolf|15 years ago|reply
"Good chance"? Come on.

In most of your cases it's pretty clear going into it how much risk you run of any of those things happening to you. And for most people that risk is almost 0.

And as others have already responded: there's always risk.

[+] xuki|15 years ago|reply
There's a greater chance that Apple won't block your app, but feature it instead, given that your app is GREAT. How about that?
[+] deveren|15 years ago|reply
Do you actually have an app currently on the app store? I've run into none of those problems. In fact, any time I have an issue with anything, they are very accomodating. Especially, expedient considering how many questions they get daily from developers. If it's as you say, what reason would there be to ever develop on their platform? It simply would make sense!