The Best Way to Learn Objective-C

I’m not going to lie to you…if your first experience learning to code is in developing for iOS, then Objective-C is going to give you some problems. It’s not that the logic is difficult, or that you won’t be able to grind your way through it, but, and I say this as someone that is self-taught, the syntax in Objective-C is one of the most difficult I’ve ever encountered.

On top of that, learning to navigate Xcode is no small task, and until you learn to navigate the menus, build settings, and understand the difference between debugging and distribution, then you’re going to find an even steeper learning curve than possible.

Don’t Quit

The first key to learning iOS development is to get past the point where you feel like quitting. Hell, it’s the same with any new skill – you’ll go through an excitement phase, followed by a brick wall that gets you wondering why you began learning in the first place. But if you can get past this part, and into the real learning, then you’ll be on easy street.

Learn Other Languages

So here’s my solution to getting past the pain and into the learning – learn other languages.

When I began learning Objective-C, I was also studying HTML, CSS, Ruby on Rails, and PHP. On their own, each one seemed difficult to master, but after  I went back to them from Objective-C, they really started to make a lot of sense.

While HTML and CSS won’t help you with programming logic, they will help you learn to understand and recognize syntax. From there, moving into a web language like Ruby or PHP will teach you to start thinking in terms of logic, which is probably the hardest part of learning to program for iOS.

When you realize that a game isn’t just a picture with moving images, but a group of layers, each with views and animation logic, then you’ll start to go from feeling like a noob, to feeling like Neo right before he kicks the shit out of Agent Smith.

Understanding Variables, Arrays, and Selection Statements

In Objective-C, you’ll need to learn things like pointers, and if/else statements, but they won’t make sense when masked by a bunch of syntax and crazy looking asterisks and brackets. In Javascript,  PHP, or Ruby, you’ll have a much easier time picking them up because the flow is easier to pick up and understand.

Better yet, if you have a WordPress installation lying around, you can easily create a test site and start playing with PHP, learning by breaking, rather than building from scratch.

From here, even if you learn just a little bit at a time, you’ll start having more and more of those “aha!” moments, which will increase your confidence and programming aptitude.

So if you want to learn how to program for the iPhone, go out and grab Xcode and a good guide or two, and then start digging into other programming languages simultaneously, learning what you can, when you can. It’s going to take time, but if you can pick up some confidence on the way, then your new skills will be much more likely to stick.

Great Programming Resources

Peepcode Screencasts

Think Vitamin Membership

Pragmatic Programmer


About Nathan Hangen

Nathan Hangen is a co-founder of Virtuous Giant, and when he isn't working, spends his spare time playing guitar, running, and studying ninjutsu.
This entry was posted in Learn to Code and tagged , , , , , . Bookmark the permalink.
  • Mr Invisible

    Thanks for the post dude :)

  • Anil

    Thanks a lot for the post.

  • Hola_12

    Totally agree… I started programming 2 years back.. and I had almost no understanding of anything.,.. In school I learned C but this was already longer time ago… I tried to start with objective c but I fail at the beginning… So I started with lua and Corona SDK to create my first iOS app… after this I got adictive to programming and started web dev –> HTML5 was on the line… but after HTML5 I got adictive to speed so i come back to objective c and since 2 months ago I can use it…

    My tip for newcommer’s: Dont get to much into the whole API stuff (its overhelming) learn the foundation API and than move forward to the api you need to use… if you want to create a game search for a easy to use engine like sparrow framework..

    Best to way to learn is to think about an project and do it but I also recommend you to learn first some scripting language if no pre knowledge is available…

    Dont listen to folks who want to tell you learn c first and than you can go to objective c…

  • newme

    thanks a lott ….very useful in kickstarting my learning

  • Canday

    I am trying to understand this but it’s hard:(

    • Nathan Hangen

      It’s tough, because you have to learn the SDK at the same time. But keep working at it, and start small if you have to.

      One of the things that I found very useful was reading other people’s code, even hiring others to write simple programs that I could study.

  • Christopher J Roura

    i am trying to learn objective c and java. any recommendations on books to get of videos for lessons?

  • Tyson Stone

    I took two quarters of C++ and hated the environment. There was too much pressure to complete assignments I had no idea how to do and the teacher barely spoke English. Most of what I learned was from collaborating with another student and YouTube.

    I hope to take a stab at Objective-C this summer now that I have too much time on my hands. Running X-Code in a VM as I don’t have access to a Mac. Any suggestions on books or a video tutorial series? I am going to see if my local Barnes and Noble has the Big Nerd book.

    • Nathan Hangen

      I’ve purchased every book and course we’ve recommended here, but after a while got tired of reading and preferred to just dig in. If you’re just getting started though, I think the Big Nerd book is a great one. I bought it for Kindle and find it very valuable.

      • Tyson Stone

        How would you suggest ‘digging in’? :)

        • Nathan Hangen

          It’s not the cheapest way, but I hired some freelancers to build simple apps for me and then analyzed the code to see what I could break and fix/change.

          • Andrew

            I see you purchased the BNR Guide. Did that help any? I ask because I bought it too but I am stuck on chapter 21. I ran the 21 chapters with little to no issues but now it’s like oh crap I am stuck! what was your take on the book? Did you finish it?

        • Nathan Hangen

          Als, if you haven’t read it, this has some good resources:

    • Kevin Collins

      Yes That is what I think also I am in university right now and I took introduction to C programming and the teachers are going so fast so i decided to just work on assignments and get the grade even though I didnt understand while teaching my self C on my own pace and speed and getting comfortable with each important parts I am enjoying it. I think the teachers want to make us hate programming that is why so many people drop out

  • Andy

    I can attest to that. I just began studying the language myself. Coming from website development, syntax and structure makes a lot of sense regardless of the fact that it’s not just C but OO programming. I can tell you that it is certainly difficult. Very few people I can honestly say are capable of teaching obj-c even some of the best don’t do it a 100% well. I don’t want to give up, I’ve been at it now for two months straight but I hit a brick wall and I don’t know if I’ll get over it. Memory management, ARC…..the self method….man those are some abstract and complicated topics right there. ….I wish there was a one stop place to learn all of this. Objective-C is rather convoluted with apple’s contribution to the language all of these years. It’s like they never really had a solid foundation so instead they just kept adding. Swift will be a lot better buttttt you still need to learn obj-c as that’s what it’s built off of. Anways, we’ll see if I keep going.