Live data from Hacker News

Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

news.ycombinator.com

1–10 of 37 posts

Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#1
What is the quickest way for an experienced programmer to come up to speed on iOS?

Looking for recommendations on a good book, tutorials. Pointers to good repositories on github also appreciated. I have started reading open-source code from some apps.

I want to write an app which needs custom UI elements (going beyond XCode's available UI elements). An example: a flipboard like app. No game dev.

- I am comfortable in C, C#, Python. I can write Javascript when needed for my web-apps.

- NO experience with Objective-C. Fairly comfortable with ANSI-C.

- I have written web-apps: HTML, CSS, JS as needed.

- I have written desktop apps: So, I am familiar with how to use available UI elements with code behind.

I see clutch.io, RubyMotion, MonoTouch as options too. Any feedback from folks on these?

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#3
For your level of experience I would go would go with Kochan - Programming in Objective-C 4th edition.

There is also a free course for iPhone programming from Stanford (video lectures).

MonoTouch is a good alternative if you prefer to use C#, but you will need to pay 99$/year to Apple + 399$ for Monotouch. The good thing is that you can evaluate MonoTouch and pay after you are comfortable with the tool.

RubyMotion is too young to be used in a large application. Also learning Ruby and Cocoa in the same time can be difficult. I think RubyMotion is a good fit for an experienced Ruby programmer that wants to start coding on iOS. Another potential problem with RubyMotion is that it is currently developed by a single person, which can be problematic on long term.

That been said, muy advice is to go on the Objective-C route since you are already comfortable with C. Objective-C is a small language and an experienced C programmer can be up to speed in a matter of days.

The real challenge is in learning the iOS libraries and not the programming language.

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#4
post #3

For your level of experience I would go would go with Kochan - Programming in Objective-C 4th edition. There is also a free course for iPhone programming from Stanford (video lectures). MonoTouch is a good alternative if you prefer to use C#, but you will need to pay 99$/year to Apple + 399$ for Monotouch. The good thing is that you can evaluate MonoTouch and pay after you are comfortable with the tool. RubyMotion is…

Yes, the general opinion seems to be:

Use Objective-C with the new Automatic Reference counting mechanism.

iOS libraries - in your opinion - what are some good resources to get familiar? (Google-fu results in a lot of links to wade through).

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#5
I'd say there's no quick way to do it, the message passing of obj-c is very different than the event-based slots & signals programming you are used to. And that's before the hell-which-is-InterfaceBuilder. Since you already familiar with programming, I'd suggest the Big Nerd Ranch guides at bignerdranch.com

Most online examples won't give you the details about the important stuff - single inheritance vs. categories, delegates and message passing in the runtime, extending a protocol, etc. You may see it in the code, but there won't be any theory or reasoning behind it to help you.

As a side note, you can track your learning progress by how much you hate XCode with specific examples of how it ruined your day.

Can't speak to clutch.io, but the other 2 just seem to get in the way of someone who already knows Ruby, C#, and obj-c. Do you really need another layer of abstraction if you want to learn something at a lower level?

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#6
post #3

For your level of experience I would go would go with Kochan - Programming in Objective-C 4th edition. There is also a free course for iPhone programming from Stanford (video lectures). MonoTouch is a good alternative if you prefer to use C#, but you will need to pay 99$/year to Apple + 399$ for Monotouch. The good thing is that you can evaluate MonoTouch and pay after you are comfortable with the tool. RubyMotion is…

Yes, the general opinion seems to be: Use Objective-C with the new Automatic Reference counting mechanism. iOS libraries - in your opinion - what are some good resources to get familiar? (Google-fu results in a lot of links to wade through).

I can not agree with recommending ARC to anyone at this time; in this case there is a ton of existing code out there which is incompatible with it. If you are an experienced obj-c developer who's tired of writing boilerplate and uses the static analyzer with LLVM - then go for it.

Learning to clean up after yourself is a life skill worth having. And besides, there's always the -fobjc-arc flag for classes which use it.

EDIT: Every project seems to include: Reachability SBJson ASIHttp

And also commonly occurring: OpenUDID ZipKit NSLogger InAppSettingsKit (there are others) Cocos2d/3d

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#7

Stanford's course is often recommended. I just started going through it myself. http://itunes.apple.com/us/itunes-u/ipad-iphone-application-...

Stanford's course is excellent. If you're starting out, watch a lecture a day alongside any other reading / researching you do.

The nice thing about the Stanford course is that it covers a lot of ground, ranging from good code design, to all the major Cocoa components, to details about most of the important ios lifecycles.

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#8
post #3

For your level of experience I would go would go with Kochan - Programming in Objective-C 4th edition. There is also a free course for iPhone programming from Stanford (video lectures). MonoTouch is a good alternative if you prefer to use C#, but you will need to pay 99$/year to Apple + 399$ for Monotouch. The good thing is that you can evaluate MonoTouch and pay after you are comfortable with the tool. RubyMotion is…

Yes, the general opinion seems to be: Use Objective-C with the new Automatic Reference counting mechanism. iOS libraries - in your opinion - what are some good resources to get familiar? (Google-fu results in a lot of links to wade through).

I suggest you to do a search after iOS 5 on Amazon and check the comments before buying a book. I'd stay away from any of the Appress books on Objective-C, iOS, etc ... low quality of information and a lot of typos.

Personally I don't have a preferred source and I tend to use Apple's documentation or tutorials from websites like:

http://www.raywenderlich.com/

iOS is a moving target so it is difficult to find a good book on this.

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#9
Read the docs from Apple. Believe or not, they are the best resources for an experienced developer. Start with the Objective-C 2.0 book/entry. Then, go from there.

Of course, if you didn't say you were experienced, I'd have suggested that you start with the (what now must be like a) gazillion different apress/o'reilly books on the topic.

Good luck!

The book: https://developer.apple.com/library/mac/documentation/cocoa/...

Re: Ask HN: Experienced programmer, beginner to iOS (objective-C). Where to begin?

#10

Earlier quoted context omitted.

Yes, the general opinion seems to be: Use Objective-C with the new Automatic Reference counting mechanism. iOS libraries - in your opinion - what are some good resources to get familiar? (Google-fu results in a lot of links to wade through).

I can not agree with recommending ARC to anyone at this time; in this case there is a ton of existing code out there which is incompatible with it. If you are an experienced obj-c developer who's tired of writing boilerplate and uses the static analyzer with LLVM - then go for it. Learning to clean up after yourself is a life skill worth having. And besides, there's always the -fobjc-arc flag for classes which use it…

Thanks for the heads-up on ARC.

Not averse to managing memory :-)

Post reply on HN