views:

1337

answers:

9

I've started to read all available apple docs on this topic. A fast overview gave me a number of about 8.000 (eight thousand) DIN A4 PDF pages. About 10% of the content is almost equal for my feeling. After reading for 2 weeks now, I figured out that I would forget fast what I have been reading a week ago. Unless I start to do something with the knowledge, it's like a drain in the brain.

What are your learning strategies?

+2  A: 

write the code as you read/lean about it (like hello world, kind of things). That is the only way I can seem to retain things.

northpole
Agreed, I find that I learn so much more when I stop reading about it, stop thinking about it and researching it and actually do it.
Redbeard 0x0A
+2  A: 

Once you have signed up with Apple to use the iPhone SDK (it's free to download and play around with, you only have to pay if you want to sell your apps on the App Store), you get access to some really great developer resources - forum, documentation, sample code, etc. I would highly recommend using those resources as a good starting point.

Download a few of the basic sample apps from Apple to get an idea of how things fit together. Developing on the iPhone is definitely a lot different from other kinds of development, so it's great to have examples to work from and use for reference.

bcwood
+11  A: 

Stanford University has a free course (here) that you can download from iTunes U. It contains both videos and PDF files, and after each lecture there are assignments, which you can use as ideas to develop.

Comming from the Java world, what I think can be the most difficult to learn is:

  • Memory management with reference counting instead of GC
  • Learn how to take advantage of message dispatching, to get the most out of Objective-C

The forums and documentation Apple provides is very good as well, and should be a reference for anything you do.

pgb
+1 I think the key here is to learn Objective-C first, then the iPhone/Mac platform later.
Outlaw Programmer
I agree totally with the message dispatching, and I would note the very nice notification systems you can lean on which Java doesn't really have a good equivalent for.A lot of the meta features people like about Java are there in Objective-C
Kendall Helmstetter Gelner
+2  A: 

Don't just think about it.....do it.

gbrandt
+7  A: 

Here's what I did (I come from a Java/C++ background):

Starting off

  • Register to be an iPhone developer at http://developer.apple.com (This is free)
  • Download the iPhone SDK (This contains, among other things the latest version of XCode and the SDK documentation -- both of which you'll be using very often when playing around with the SDK or when creating apps).
  • Get the Hillegass book. This book teaches the basic concepts of Cocoa very well. I've found it a good way to understand reference counting in Cocoa (retain, release, assign etc.)
  • Buy the Orange book on iPhone Programming. This is really good. (I'd bought Erica Sadun's book earlier, but that does not explain things from a beginner's perspective)
  • Try out the programs.

That should get you reasonably up to speed and developing basic applications. (I have not seen the Stanford video lectures yet, but I think that's a very good way to start too)

Getting better at it

  • To get a good understanding of Cocoa concepts, I've found the best resource to be the Apple Programming Guides. You should definitely read these. They have one on almost every topic, from NSStrings to Objective 2.0 properties, the memory model etc. You will find these in the XCode documentation. (If you're looking up a class reference etc. you will find the associated programming guides listed in the left sidebar)
  • Apple sample code: You'll find this again at http://developer.apple.com. You can reuse and/or adapt these.

You should be up and developing applications by now. If you're stuck or need advice, here are some additional resources:

What to do when you're stuck

  • The Cocoa-Dev mailing list (This is not Cocoa-touch specific per se, but I've got some very good answers from here)
  • The Apple discussion forums
  • IRC

(I'm not sure if the above resource list is good enough -- but others can correct me)

Nocturne
I read this answer and followed it. Hillegass is a great book but perhaps one could skip some parts that are specifically for OSX. The Orange book is also very good, but the code and text get buggy towards the end.
Arne Evertsson
+1  A: 

Until I get some feel for the environment I am in, I tend to run through example code and/or tutorials... but I never follow them exactly. Always change some value, some detail some method of implementation, and observe the results it has.

Just following directions I never learn anything. Changing things, and seeing the effects it has, I learn a ton.

mmc
+1  A: 

This document is the language rosetta stone from C++/Java to Objective-C (lots of stuff for Java people in there):

http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf

Beyond that, note that the iPhone is very heavy on capability through wide and deep foundation classes, just like Java. Try to learn them as well as you can, and be aware there are even deeper levels under Cocoa with the CF C-based calls when you need more flexibility.

Understand well the memory management model and it's easy to deal with. Here's the absolute best and simplest description I've read of how to treat memory management when using Interface Builder outlets:

http://blog.airsource.co.uk/index.php/2008/12/23/memory-management-and-nibs/

Kendall Helmstetter Gelner
+1  A: 

I would add something to these very good answers - choose a project and start work on it almost at once. I learn much more deeply when I'm having to find an answer for my implementation than I do when I'm reading without an ulterior motive other than "learning."

You could post another question asking for ideas for your first project.

Jane Sales
thanks! I have one already, but I stopped development to first get through all those infos. Want my first app to be perfect ;)
Thanks
+1  A: 

When I am learning any new language I take the provided sample code and rewrite it from scratch. That way if I get stuck on how to do something I can flip over to the provided sample as a reference. I find simply rewriting sample code helps me, especially when there are big syntax differences.

With regards to the iPhone, I would play close attention to memory management. There is some great sample code and documentation in the iPhone Dev site.

hipplar