If you want to learn something, just start doing whatever you want to learn.
Learn by doing.
If you want to learn iOS, pick something to work on and start. "But I don't know Objective-C." Okay, Google "getting started with Objective-C" or buy a book. If you run into something you can't figure out, Google it, search StackOverflow, or ask a friend. This technique applies to anything.
Learning a bunch of stuff before trying to do is useless. The college approach is worthless.1 Let's say you spent 4 years learning computer science, graduated, and then tried to make an app. Now you are going to do this same thing. Learn as you go for the things you don't already know. I'd wager you spent a ton of time learning things you aren't going to use for this project or even ever.
Learn what you want to learn. This keeps you motivated and excited. Motivation is a powerful tool.
I know a lot of people that try to understand everything about iOS, Rails, or whatever they're trying to learn. This is stupid. If you actually tried to understand it all, you'd spend years before even coming close. Just look at a simple request of the Internet. If you even got as far as TCP, I'd be impressed. If you did, TCP is mind blowing topic on it's own. (The nerdy part is over, carry on.)
When you get started with something new, you'll suck at it. That's okay. No one knows everything or is good the first time they do something. This is normal. Don't get discouraged. You're making something. The process alone should be exciting. Once you make something, no matter how simple it is, you've made something!
So, go start doing right now. Seriously, close this blog post and fire up Google. There's no time like the present.
1 This definitely has exceptions. Doctors, please don't learn by doing on me.