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)
}
}];
}