0

requestPanoramaNearCoordinateGoogle マップの SDK メソッドに何か問題がありますか? に引っかかる原因となりwhile loopます。非同期コールバック メソッドが完了するまで、メソッドの残りの部分を実行して待機するためのループを作成しました。しかし、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;

}

4

1 に答える 1

1

非同期メソッドを起動してからループを実行するのはなぜですか? ブロック (GMSPanorama 引数付き) をパラメーターとしてメソッドに追加し、このブロックを内部で呼び出す必要があります。callback:^(GMSPanorama *panorama, NSError *error){

そのようなもの:

   - (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)
        }
    }];
}
于 2013-08-13T12:51:59.383 に答える