I've taught myself programming, Objective-C, and the basics of Cocoa. I still have a long way to go, and am always learning new things (also the frameworks keep improving so things are always changing). It will take a lot of patients, and hard work to get there but it's doable. It took me several years of studying on the side to get where I am, and I still have a LONG ways to go.
You'll be able to put things together much sooner than that, but as you learn more, you'll realize how much better you could have designed the code of your earlier projects.
As for resources, I fumbled through a few books before I found "
Programming in Objective-C" by Kochan which is now in it's 4th edition. For me, it was the one book that made things click together. Aaron Hillegass has just released his newest edition of the "Cocoa Bible" called "
Cocoa Programming for Mac OS X" which is also in it's 4th edition. This book is excellent, but really should be supplemented by learning to search Apple's documentation and guides on programming topics as it moves quickly. You should fully understand pretty-much everything in Kochan's book (or an equivalent) before doing Hillegass.
Another book that really stood out for me was "
Clean Code: A Handbook of Agile Software Craftsmanship" by Martin. This book focused not on how things work, but on general principles and strategies for how to make Object Oriented Code easier to read and manage. The examples are written in Java, but knowing Objective-C should give you enough understanding to grasp the meaning of his examples--I could get the gist of them and I've never learned any Java. To make an analogy with learning how to write, in the beginning you're going to be concerned with making your sentences grammatically correct, or else things simply won't work. Understanding how things work is essential. As you start to figure things out, you'll be much more concerned with making your code easy to understand. This is equivalent to learning how to communicate meaning well in an essay. Both components are essential for writing good code.