ARC supposedly does away with reference counting. However, blocks introduce a small wrinkle.
When you reference self in a block you make a strong reference to it which encourages leaks as you end up with objects (including View Controllers) hanging around beyond when they’re needed.
The solution is to define a weak reference before the block and use that. Inside the block you convert it to a strong reference. We don’t have a proper strong reference outside the block so it decrements as it should do. However, it’s a pain (see the first part of the linked-to post).
This is where the @weakify(self) technique makes things simple and easy. See the second part of this post!
http://blog.aceontech.com/post/111694918560/weakifyself-a-more-elegant-solution-to