Found a problem, you need to replace:
__unsafe_unretained NSBlockOperation *weakOperation = operation;
with:
__block NSBlockOperation *weakOperation = operation;
BTW, for anyone interested, there is a good video on concurrency, in particular, relying on a separate stream and using the NSOperationQueue in WWDC2012, called Building Concurrent User Interfaces on IOS.
source share