Is there a better way to make sure a variable is initialized when using blocks?
Create and run operation using 

NSOperation *op = [NSBlockOperation ... your block...];
[[NSOperationQueue new] addOperation: op];


and instead of using a runloop, wait for the result:

[op waitUntilFinished];