In your case the method provides the body to the block. So the returned value(MKCoordinateRegionMake) will be returned to the caller of the block, which is not present.(setRegion: is not the caller here).
What you can do instead is you can do this:
MKCoordinateRegion (^aRegion)() = ^(void)
{
CLLocationCoordinate2D centerCoordinate = [Location sharedManager].coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
return MKCoordinateRegionMake(centerCoordinate, span);
};
[self.mapView setRegion:aRegion() animated:YES];
Moreover if you still want a block-style execution you can try this:
[self.mapView setRegion:({
CLLocationCoordinate2D centerCoordinate = [Location sharedManager].coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
MKCoordinateRegion region= MKCoordinateRegionMake(centerCoordinate, span);
region;
})];
The second one is not a block but its a syntax.