How long to become proficient in Objective-C?

Discussion in 'iOS Programming' started by philmanwill, Nov 29, 2011.

  1. philmanwill macrumors newbie

    Joined:
    Jun 2, 2010
    #1
    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?
     
  2. miles01110 macrumors Core

    miles01110

    Joined:
    Jul 24, 2006
    Location:
    The Ivory Tower (I'm not coming down)
    #2
    You cannot pick up a beginner's Objective-C book and after 6 months start jailbreaking an iPhone.
     
  3. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #3
    What would you recommend?
     
  4. miles01110 macrumors Core

    miles01110

    Joined:
    Jul 24, 2006
    Location:
    The Ivory Tower (I'm not coming down)
    #4
    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.
     
  5. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #5
    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.
     
  6. chrono1081 macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #6
    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.
     
  7. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #7
    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.
     
  8. larswik macrumors 68000

    Joined:
    Sep 8, 2006
    #8
    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.
     
  9. North Bronson macrumors 6502

    Joined:
    Oct 31, 2007
    Location:
    San José
    #9
    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.
     
  10. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #10
    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....
     
  11. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #11
    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.
     
  12. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #12
    That's the thing... I don't know how tightly focused hacking iOS and finding exploits is... :confused:
     
  13. dejo Moderator

    dejo

    Staff Member

    Joined:
    Sep 2, 2004
    Location:
    The Centennial State
    #13
    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.
     
  14. RonC macrumors regular

    Joined:
    Oct 18, 2007
    Location:
    Chicago-area
    #14
    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!
     
  15. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #15
    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.
     
  16. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #16
    Interesting. Any ideas on how/where to get started on that?

    ----------

    Haha yeah, I figured that out too. Unless it specifically mentions iOS in the title, its usually about app dev.

    ----------

    Sweet! Thank you so much! :D
     
  17. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #17
    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.
     
  18. dejo Moderator

    dejo

    Staff Member

    Joined:
    Sep 2, 2004
    Location:
    The Centennial State
    #18
    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.
     
  19. 1458279 Suspended

    1458279

    Joined:
    May 1, 2010
    Location:
    California
    #19
    Yep, he's right, you might end up on spending most of your time on a hacker-forum/blog
     
  20. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #20
    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.

    ----------

    Should I learn one before the other? Objective-C before ARM, or via-versa, or does it matter?
     
  21. xStep macrumors 68000

    Joined:
    Jan 28, 2003
    Location:
    Less lost in L.A.
    #21
    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.
     
  22. philmanwill thread starter macrumors newbie

    Joined:
    Jun 2, 2010
    #22
    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?
     
  23. chown33 macrumors 604

    Joined:
    Aug 9, 2009
    #23
    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.
     
  24. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #24
    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.
     
  25. xStep macrumors 68000

    Joined:
    Jan 28, 2003
    Location:
    Less lost in L.A.
    #25
    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.
     

Share This Page