The way I've always learned a new language was to think of a specific project I wanted to create, and then I implemented it. These projects should not be huge, but big enough to require some hours of work.
For example, one project I used to learn Objective-C was making a project to generate large arrays of random objects, run a multithreaded sort algorithm on it, run some other "work" on it, and then spit out some output. Utterly meaningless, and everything I did could be done with standard libraries a lot quicker, but it taught me syntax, Objective-C's handling of classes and inheritance, Objective-C's memory management, and it took a bit of time to think about everything.
Now, of course, I have a strong theoretical background which lets me jump right into a project like that in an afternoon and come out understanding a lot of Objective-C's quirks (and that is just one learning project, to be clear, not the only one I did).
If somebody is brand new to programming, they probably wouldn't even be able to imagine such a project, much less know the first step in implementing it. And yet, what I did is a joke compared to an actual iOS app.
It absolutely makes sense to learn a programming language as a beginner, with all the things that entails. Everything we do in computing is building on what we learned how to do before. For somebody starting from nothing, they should really write a Hello World! program. Then figure out how to take in input from a console and manipulate it. Write a calculator program that parses input to identify operators. Build a Car class and subclass off of it. Make a Car array filled with Convertibles and MiniVans and PickupTrucks and bubble sort through it by carSpeed(). Write a recursive algorithm that solves basic chess puzzles. Write a program that reads in a big file of text, figures out probabilities from the language, and outputs a file of random text that beats typing monkeys and is actually mostly readable.
Yes, eventually, you need to learn GUI, you need to learn Cocoa and other APIs. A lot of the hard work is already done for you and you can take advantage of a lot of other people's code. But if you don't even know how to make a for loop, or parse a string, or understand the theories that go into making efficient code, I don't know how you're gonna learn to make the next big iOS app.