Block is heavily used in objective-c APIs. If you want to write concurrent and responsive interface, you will need blocks and grand central dispatch. Blocks also bring many goods form functional programming to cocoa. It is just awesome.
However, when I first learn blocks I found the syntax confuses me a lot. This is why I wrote this article. Hope this article can help people who have the same problem as I did.