Как сделать вызов функции в ios, чтобы ждать, пока блок внутри этой функции не будет выполнен полностью?

Внутри следующей функции ямы использовали блок. Но когда я вызываю эту функцию, она возвращается еще до выполнения блока. Я понял, что Block inturn использует потоки и выполняется отдельно, поэтому функция не ожидает его возврата. Но есть ли другой способ заставить ожидание выполнения функции или любой другой способ добиться функциональности этого блока без использования самого блока?

-(int)findCurrentZip
{
        CLLocation *userLocation = [[CLLocation alloc] initWithLatitude:[self findCurrentLatitude]
                                                              longitude:[self findCurrentLongitude]];
         int zipcode;
        self.myGeocoder = [[CLGeocoder alloc] init];
        [self.myGeocoder 
         reverseGeocodeLocation:userLocation
         completionHandler: (id)^(NSArray *placemarks, NSError *error) {
             if (error == nil && [placemarks count] > 0)
             {
                 NSLog(@"Placemarks: %@",placemarks);
                 CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
                 NSLog(@"Country = %@", placemark.country);
                 NSLog(@"Postal Code = %@", placemark.postalCode);
                 zipcode = (int)placemark.postalCode;
                 NSLog(@"Locality = %@", placemark.locality);
                 NSLog(@"Country%@",[placemarks lastObject]);
             }
             else if (error == nil && [placemarks count] == 0)
             {
                 NSLog(@"No results were returned.");
             }
             else if (error != nil)
             {

             }
        }];

        return zipcode;
    }

Ответы на вопрос(1)

Ваш ответ на вопрос