Не уверен, где я нашел это, но есть лучший способ не использовать сны:
while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true) && !placeMarkUpdated){};
здесь, в контексте, тестирование запроса обратного геокодирования:
__block BOOL placeMarkUpdated = NO;
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
if (placeMarkUpdated == NO) {
placeMarkUpdated = YES;
CLPlacemark *placemark = [placemarks objectAtIndex:0];
address = [Address addressFromPlacemark:placemark];
}
}];
while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true) && !placeMarkUpdated){};
Сны - отстой, потому что они замедляют сборку (я знаю, что 5с звучит неплохо, но рассмотрим старую историю: парень идет к врачу, потому что его колени болят от бега, доктор говорит «встань на стол» и стучит по нему колено и говорит «это больно?» парень говорит «нет», доктор: «было бы, если бы я сделал это 10K раз ...»