iOS How long to become proficient in Objective-C?

philmanwill

macrumors newbie
Original poster
Jun 2, 2010
18
0
I have very limited knowledge of HTML and CSS, but that's it. I am VERY comfortable with the computer. I have heard a lot of people say to learn C before Objective-C, but I found this super highly rated book by Big Nerd Ranch that teaches you just enough C to understand Objective-C. I want to know if 6 months is enough time to become proficient enough in Objective-C to start iOS development and hacking. Basically, is 6 months enough time to go from here:

http://www.amazon.com/Objective-C-P...6285/ref=sr_1_2?ie=UTF8&qid=1322632459&sr=8-2

to here:

http://www.amazon.com/iOS-Hackers-Handbook-Charles-Miller/dp/1118204123/

I don't want to be the guy following the tutorials on jailbreaking iPhones, I want to be the one helping write them. What do you guys think?
 

miles01110

macrumors Core
Jul 24, 2006
19,261
31
The Ivory Tower (I'm not coming down)
What would you recommend?
Tempering your expectations. I'm sure you could reach the point where you oculd start meaningfully contribute to jailbreaks, but to get there could take years depending on how diligent you are an how well you take to programming. Especially since it doesn't seem like you've done any before. "Being comfortable with the computer" - whatever that means - doesn't seem to count for much.
 

philmanwill

macrumors newbie
Original poster
Jun 2, 2010
18
0
Tempering your expectations. I'm sure you could reach the point where you oculd start meaningfully contribute to jailbreaks, but to get there could take years depending on how diligent you are an how well you take to programming. Especially since it doesn't seem like you've done any before. "Being comfortable with the computer" - whatever that means - doesn't seem to count for much.
Okay, so the time expectation has been thrown out the window. As for actual knowledge, what would you recommend I learn/practice to get started? I just want to actually start contributing vs just sitting there and waiting.
 

chrono1081

macrumors 604
Jan 26, 2008
7,678
1,825
Isla Nublar
That book is probably the best start you will get. Once you use that book, you will want to jump to the Big Nerd Ranch iPhone programming guide.

As for how long until you can contribute to jailbreaking, thats pretty much unanswerable. You will have to know all about things like the baseband and such and be able to find exploits. There are books out there on hacking iPhones but the names escape me. I've seen them at Barnes and Noble before. Those would be a good place to look after you learn Objective-C and Cocoa.
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
This plan is very dependent on how much time you have to spend and how quickly you pick things up.

There is nobody that can tell you how long it'll take to learn something. Even your background can't give a fully accurate indication.

The only way to know for sure is to jump in and get started. I like to grab books and grind through the examples and modify programs, it's the old 'crash and burn' method.

Understand that some concepts might take a long time to grasp and others might come quickly. Usually when things are going slow, grabbing a different book can help.

The point is that I wouldn't be dependent on just a few books, I'd grab a few and get started, then grab a few more.

Don't fixate on the 6 months or any time line, it'll take what it takes. After a while, you can decide if it's the right path for you.
 

larswik

macrumors 68000
Sep 8, 2006
1,552
11
Don't fixate on the 6 months or any time line, it'll take what it takes. After a while, you can decide if it's the right path for you.
This statement is so true, and you will find disappointment if you set time tables.

Way back in High School I played Dungeons and Dragons with my friend and programming is very similar to me. There is never an end and your character just gets better, smarter, stronger as you keep playing and earning experience points. I am still learning Obj C and I think I will always be learning because Objective C always seems to be changing with new ios old features going out and new ones coming in.

That's my 2 geeky cents.
 

North Bronson

macrumors 6502
Oct 31, 2007
395
1
San José
Objective-C is really a pretty small language. It is not really Objective-C that takes so much time to continue learning, it is the Apple frameworks that you will spend much more time studying.

It is a little like how it is with C. The language itself is small, but you can spend a lot of time learning how to use function libraries that sit on top.
 

philmanwill

macrumors newbie
Original poster
Jun 2, 2010
18
0
I appreciate the comments and pointers. Thanks! :D I have from Christmas 2011 until September of 2012 off of school, so I have a feeling I will be doing a lot of teaching myself. It seems like that is the best way to do things sometimes, as I feel like I don't forget it nearly as quickly. I hope that between christmas and september I can be decent enough to maybe contribute a few tweaks to cydia and maybe help some other people that will be in the same position as I am now. :)

----------

Objective-C is really a pretty small language. It is not really Objective-C that takes so much time to continue learning, it is the Apple frameworks that you will spend much more time studying....
So, its not necessarily the language that can be tough to learn, but how to use it in different situations? Huh. So it really is like a foreign language. I learned French and Spanish a while back. I learned the words and grammar no problem, but sometimes I couldn't speak because I couldn't remember how I was supposed to use certain words.... Interesting....
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
I appreciate the comments and pointers. Thanks! :D I have from Christmas 2011 until September of 2012 off of school, so I have a feeling I will be doing a lot of teaching myself. It seems like that is the best way to do things sometimes, as I feel like I don't forget it nearly as quickly. I hope that between christmas and september I can be decent enough to maybe contribute a few tweaks to cydia and maybe help some other people that will be in the same position as I am now. :)

----------



So, its not necessarily the language that can be tough to learn, but how to use it in different situations? Huh. So it really is like a foreign language. I learned French and Spanish a while back. I learned the words and grammar no problem, but sometimes I couldn't speak because I couldn't remember how I was supposed to use certain words.... Interesting....
That's really the big deal, the API is large and changes all the time. The upside is that if you are focused on one area, you can ignore others. Example: using SQLite requires a good bit of work, if you are only focused on 2D games, you may never have to learn SQLite...

You can do a lot with a little if your area is tightly focused.
 

dejo

Moderator
Staff member
Sep 2, 2004
15,981
450
The Centennial State
That's the thing... I don't know how tightly focused hacking iOS and finding exploits is... :confused:
Not only will you need to know Objective-C and all the frameworks inside and out, you will probably need to add a whole new layer of complexity to your focus of hacking iOS: assembly language.
 

RonC

macrumors regular
Oct 18, 2007
108
0
Chicago-area
I appreciate the comments and pointers. Thanks! :D I have from Christmas 2011 until September of 2012 off of school, so I have a feeling I will be doing a lot of teaching myself. It seems like that is the best way to do things sometimes, as I feel like I don't forget it nearly as quickly. I hope that between christmas and september I can be decent enough to maybe contribute a few tweaks to cydia and maybe help some other people that will be in the same position as I am now. :)

----------



So, its not necessarily the language that can be tough to learn, but how to use it in different situations? Huh. So it really is like a foreign language. I learned French and Spanish a while back. I learned the words and grammar no problem, but sometimes I couldn't speak because I couldn't remember how I was supposed to use certain words.... Interesting....
Follow the Stanford class on iTunes U. It's a great way to jump start your learning (along with the book). The instructor, Paul Hegarty, is really good at his job and if you follow you will learn. The pace is pretty fast, so be prepared to keep up!
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
If your focused on hax, then you can probably skip the API. Depending on what you want to do.

Example: Right now I'm focused on learning the API stuff, I'm spending most my time learning everything I can about certain API's... This will take some time, but once you master one, the others should be a bit easier.

I'm learning how to make great apps that do great things with the tools Apple gives up... that's actually a big job.

You on the other hand, probably don't have any reason to learn the API, SQL...

In fact you might be able to do everything you need in C, remember that ObjectiveC is a super set of C. I'm not the expert on this, but I was told that you can do everything in C/C++, but interfacing into the API would be much more work... So I've put mastering ObjC on the todo list.

Might want to confirm this, but you might just do C/C++ and run with that.

Edit: Actually you could probably skip most of the iPhone programming books too, as most of them are for app development. Probably need more iOS kinda books.
 

philmanwill

macrumors newbie
Original poster
Jun 2, 2010
18
0
Not only will you need to know Objective-C and all the frameworks inside and out, you will probably need to add a whole new layer of complexity to your focus of hacking iOS: assembly language.
Interesting. Any ideas on how/where to get started on that?

----------

Actually you could probably skip most of the iPhone programming books too, as most of them are for app development. Probably need more iOS kinda books.
Haha yeah, I figured that out too. Unless it specifically mentions iOS in the title, its usually about app dev.

----------

Follow the Stanford class on iTunes U. It's a great way to jump start your learning (along with the book). The instructor, Paul Hegarty, is really good at his job and if you follow you will learn. The pace is pretty fast, so be prepared to keep up!
Sweet! Thank you so much! :D
 

firewood

macrumors 604
Jul 29, 2003
7,819
1,072
Silicon Valley
I see several book listed in Amazon on ARM assembly language programming. However learning low level coding is almost completely in the opposite direction from learning OOP app development.
 

dejo

Moderator
Staff member
Sep 2, 2004
15,981
450
The Centennial State
Haha yeah, I figured that out too. Unless it specifically mentions iOS in the title, its usually about app dev.
I would suspect most books that mention iOS in the title are also about app dev, since that's the OS you're developing apps for. I also suspect there aren't many books on hacking iOS; seems to me to be more of a black-hat community.
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
I would suspect most books that mention iOS in the title are also about app dev, since that's the OS you're developing apps for. I also suspect there aren't many books on hacking iOS; seems to me to be more of a black-hat community.
Yep, he's right, you might end up on spending most of your time on a hacker-forum/blog
 

philmanwill

macrumors newbie
Original poster
Jun 2, 2010
18
0
I would suspect most books that mention iOS in the title are also about app dev, since that's the OS you're developing apps for. I also suspect there aren't many books on hacking iOS; seems to me to be more of a black-hat community.
Well, as far as I can tell MuscleNerd is supposed to be the editor of a new iOS hacking book that explains what he does to find exploits/create jailbreaks. I'm very excited for it.

----------

I see several book listed in Amazon on ARM assembly language programming. However learning low level coding is almost completely in the opposite direction from learning OOP app development.
Should I learn one before the other? Objective-C before ARM, or via-versa, or does it matter?
 

xStep

macrumors 68020
Jan 28, 2003
2,013
100
Less lost in L.A.
If from scratch my aim was to write exploit code, I'd start with C and learn it inside out. That would be a good foundation for what you'll need in the future. Given no loss of interest after a few of months of that, I'd focus on learning assembly language for the target platform. If my interest still hasn't been dulled, I'd then find or build a disassembly app. Once you are comfortable reading disassembled code, you'll probably be ready to learn the hard stuff of identifying possible exploits and writing such code your self.

After learning C, I'd start hanging out on web sites that focus on exploiting. Besides technical knowledge, you'll also want to pick up the mindset needed for such meticulous work.

Some have suggested learning the Cocoa frameworks. I'd argue you don't need that high level knowledge. Learning the low level Objective-C runtime system on the other hand may be valuable. You'll figure that out when you arrive at your destination.

Exploit coding is an interesting subject. From what I understand of it, it is a very time consuming process met with many failures. The learning process to get to that knowledge base will be easy in comparison because while learning you are always moving forward. After the investment in learning how to code, you might find you don't have the patience for hacking exploits. :D

Good luck.
 

philmanwill

macrumors newbie
Original poster
Jun 2, 2010
18
0
Interesting thoughts. See, I've had people say "learn c" then ive had others say to skip it and just learn as much as I need to to understand objective-c. Any thoughts on that?
 

chown33

Moderator
Staff member
Aug 9, 2009
8,788
5,187
vertical
Interesting thoughts. See, I've had people say "learn c" then ive had others say to skip it and just learn as much as I need to to understand objective-c. Any thoughts on that?
Different people need different things. Try one thing. If it doesn't work for you, try the other.

Learning programming is an inherently exploratory process. If you're not willing to explore on your own, you will be less successful at it.

Figuring things out without having them explained to you isn't just part of the learning process, it's an inherent part of the whole software design and development process.
 

firewood

macrumors 604
Jul 29, 2003
7,819
1,072
Silicon Valley
Interesting thoughts. See, I've had people say "learn c" then ive had others say to skip it and just learn as much as I need to to understand objective-c. Any thoughts on that?
Some people are lazy and like to write simple apps the easy way.

IMO, it's like trying to construct a building without understanding proper soil and foundation engineering. Nice looking 1 story house on good stable ground, you got lucky. Taller more novel architecture on more interesting geology, the walls crumble and the building gets red-tagged as a tear down... or thousands die as in Haiti.
 

xStep

macrumors 68020
Jan 28, 2003
2,013
100
Less lost in L.A.
Interesting thoughts. See, I've had people say "learn c" then ive had others say to skip it and just learn as much as I need to to understand objective-c. Any thoughts on that?
Think about what it is you'll be doing. You'll be attempting to exploit compiled code. If you want to take a short cut, skip C and start with ARM assembly language. Currently on iOS devices, what you are exploiting are ARM instructions.

Objective-C is a superset of C. Method calls are reduced to C calls in the background during compile time. So that app or system process you'll be targeting will essentially have come from standard C.

People tend to suggest C because it will give you a good foundation of programming in general. When you have questions, there will be more people able to answer you because so many have gone through the same path.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.