Just starting out on the Stanford Uni IOs course. I have slowly worked my way through.
I really recommend the companion text by Daniel Steinberg. It is excellent. He explains things clearly and shows both simple and sophisticated examples of how to do thing.
For example enumerating an array he shows a way that is straightforward loop, then fast enumeration and finally using blocks. (The recommended way).
Far too often C, C++ & objective C programmers couch their answer in deeply embedded single line solutions that are horrible for readers to unpick.