Objective-C:异步回调条件检查



requestPanoramaNearCoordinate谷歌地图SDK方法有问题吗?导致它卡在CCD_ 2中。我之所以编写循环,是因为我想等待执行该方法的其余部分,直到异步回调方法完成。但是while循环无限循环。是我的代码出了问题吗?

__block GMSPanorama *panPhoto = nil;
__block BOOL finished = NO;
[self.panoService requestPanoramaNearCoordinate:ranLatLng callback:^(GMSPanorama *panorama, NSError *error) {
    NSLog(@"panorama: %@ error: %@", panorama, error);
    panPhoto = panorama;
    finished = YES;
}];
while (!finished) {
    // Do nothing);
}
if (!panPhoto) return [self randomLatitudeLongitude];

return ranLatLng;

}

为什么启动异步方法然后执行循环?您必须将块(带有GMSPanorama参数)作为参数添加到方法中,并在callback:^(GMSPanorama *panorama, NSError *error){ 内调用此块

像这样的Smth:

   - (void) methodNameWithBlock:(BlockName)block;
    __block GMSPanorama *panPhoto = nil;
    __block BOOL finished = NO;
    [self.panoService requestPanoramaNearCoordinate:ranLatLng callback:^(GMSPanorama *panorama, NSError *error) {
        NSLog(@"panorama: %@ error: %@", panorama, error);
        panPhoto = panorama;
        finished = YES;
        BlockName handler = [block copy];
        if (!ranLatLng){
           handler([self randomLatitudeLongitude])
        } else {
           handler(ranLatLng)
        }
    }];
}

最新更新