Alternatively you could do something like this:
if (data)
{
[self performSelectorInBackground:@selector(loadNearestCoffeeShops:) withObject:data];
}
....
Keeping in mind that if loading the nearest coffee shops require any UI related work you then have send that back to the main thread via:
[self performSelectorOnMainThread:... withObject:... waitUntilDone:...]