How I learned Objective-C
I am the lead developer of GNUstep. I have been developing software for almost 30 years and, in all of that time, I have worked on GNUstep since 1999. I am also highly experienced in other application development languages as well. I am passionate about software and, especially, object oriented programming.
Why I wanted to learn Objective-C
When I was in college NeXT donated a large number of systems to the University of Maryland at College Park. In order to complete many of my assignments I needed to use these machines in order to do my work. I eventually acquired one at home, a NeXTcube, and started using it there. I had always had an interest in Object Oriented Programming and, having learned C++ the year before I was eager to learn Objective-C on this, at the time, advanced platform.
How I approached learning Objective-C
At first I began studying books about the subject. The first book was the one by Brad Cox called "Object Oriented Programming: An Evolutionary Approach." This book was informative, but not everything I needed in order to learn. So I pressed on and learned by example. I studied any and all available documentation on the machines themselves since the NeXT had an extensive library of documentation available this was relatively easy.
Challenges I faced
Since Objective-C was not quite (and still isn't) as popular as other alternatives at the time, especially C++, I was forced to find some of the early works on this subject on my own. The biggest challenge I face was understanding the new syntax and working with Interface Builder, which I eventually ended up writing the GNUstep equivalent for called Gorm.
You can learn or do anything if you put your mind to it. Even when there is not much documentation available, if you are persistent you will, eventually, get there.
Tips and advice
Don't let the age of Objective-C or the unfamiliar syntax be a blocker for you. Objective-C was designed to be a simple and direct superset of C where the syntax denoting objects is separate and distinct from those for normal C. C++ differs in the sense that almost no new syntax was introduced to do objects, but existing elements were re-purposed.
Also, anyone learning Swift will find it hard NOT to learn Objective-C since Swift was designed to work with the millions of lines of existing Objective-C code in existence.
Final thoughts and next steps