Should I learn or build first?

“My goals with programming is to create web and desktop (mac, iphone) apps if that’s relevant.” 

Then you have it backwards. You should be building, not reading. 

Slow way: Read book —> apply what you learn 

Fast way: Write code —> Get stuck —> Find a book 

I know this is not intuitive, but trust me, it works much better. We all love the feeling of cracking open a fresh new book (or pdf) and bathing ourselves in all this newfound knowledge. But this method is not very efficient. Much of what you read you will never use and much of what you need you will never read about, no matter what the book is. 

Better to pick a project and just start building it. Come up for air every once in a while and consult whatever book fills in what you need to know to build your project. True learning comes from building, not reading. This method takes the best of both worlds and gets you to your stated goal much quicker.