Ah sorry about the little tirade—I was pretty frustrated. I totally see your point though, so I hope I haven't offended you by blowing up in your face.
No offense intended; none taken. Not in the slightest amount.
I've had a few years of experience with C++ so I wanted to expand and go to Objective-C. My limited time is kind of skewed. Right now my schedule hasn't been very rigorous so I've had the time to take 1 or 2 hours for extra things every other day, but every other few weeks or so I'll have a few weeks or up to a month of not having any time at all. I want to be able to have programmed solid app for either Mac or iPhone or both by next year around this time, in the contraints of my time to spend. A lot is riding on if I can pull it off so I'm prepared to let go of some hours of sleep here and there. I've been assuming it will take a while to learn Objective-C thoroughly enough to create a solid application, maybe my fear or estimation of time is incorrect—I don't know anyone personally who programs for apple products so I don't have anything to go off of.
That makes sense. Here's how I'd approach it.
First, learn
the language itself. That's the core Objective-C stuff, like how to define classes, subclasses, categories, and what the [] syntax is. I'd actually include Cocoa's foundation classes in that, because they're pivotal to so many other things.
From a practical viewpoint, you can write command-line utilities that use Objective-C and Cocoa
Foundation classes, without needing to know anything about any GUI. You can also use networking classes to work in this command-line environment (the NSURL* classes). The purpose here is to learn how all the invisible infrastructure works, and the fundamental
Cocoa design patterns like delegation.
Second, I'd say learn to use Interface Builder to make GUIs, and figure out all the stuff about dealing with NSViews, events, more kinds of delegates than you can shake a stick at, and the MVC design architecture.
If you have a solid foundation, you'll be able to make the underlying Models of
MVC with relative ease, even though you might trip and stumble over the V and C parts at first.
I've decided it's best to stick to Xcode three and program using that with books using older sytax. I have another 2 years before I will be able to buy a new laptop, so I think it's safer for me to just stay within my constraints for now. Actually, if I programmed an iPhone app with Xcode 3, if I decide I want to publish to the iphone app store and I pay and sign up, will it accept code that is old? Or only applications intended for the newer iOS? (Note: I'm not trying to make money, but rather have it as an accomplishment and learned experience.)
Older code isn't a problem. You can support iOS platforms as far back as you care to go.
There may be technical hurdles to cross if you're using really old Xcode versions, as they may be more difficult to get the code-signing and distribution bundling needed to make an app-store submission. When you actually reach that point, that would be the time to consider upgrading to the latest tools. But the code itself should still be ok, except for a few things.
The "few things" would be features or classes that Apple has deprecated and actually removed. Most deprecations haven't been removed yet; they're still available even though their replacements have been released. The class reference docs will list deprecated classes and methods, and also tell you what the replacements are.
Two years is a long time in this biz, and iOS isn't standing still. By the time you get to the point of upgrading your machine, the baseline will already have moved significantly. If you can't afford to stay on the leading edge, your best bet is to stay well back towards the trailing edge. For one thing, used Macs that support trailing-edge technology are a lot less expensive. And if your livelihood doesn't depend on riding the leading edge, there's a lot more calm water behind the leading edge, and a lot less blood in it.