0

CCLocationManagerメソッドをブロックに変換する際に問題があります。 マイCLLocationManager方法は、次のようになります。CLLocationManagerメソッドをiOS目的のブロックに変換する方法

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    NSLog(@"didUpdateToLocation: %@", newLocation); 
    } 
    else{NSLog(@"current location is nil");}; 
} 

私はブロックに、このメソッドを変換しようとしているが、そうしようとしているの難しさを持っています。客観的なCとIosの開発に新しいこと。私がやっている何

は次のようなものです:

double (^getSpeed)(*CLLocation, *CLLocation) = ^(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
     { 
      NSLog(@"didUpdateToLocation: %@", newLocation); 
      CLLocation *currentLocation = newLocation; 
      mSpeed = currentLocation.speed; 
      } 
      else{NSLog(@"current location is nil");}; 
      return mSpeed; 
     }; 

が、それはそれはブロックの最初の行に式を期待していること言って私にエラーを与えます。どういう意味ですか? ご協力いただければ幸いです。あなたがこの方法を試すことができます

答えて

0

、この

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray<CLLocation *> *)locations { 
    CLLocation *location = [locations lastObject]; 
    _objBlock(location); 
    [locManager stopUpdatingLocation]; 
    locManager = nil; 
} 

- (void)locationManager:(CLLocationManager *)manager 
     didFailWithError:(NSError *)error { 
    NSLog(@"%@",[error localizedDescription]); 
} 

- (void)updateCurrentLocation:(currentLocation)completionBlock { 
    _objBlock = completionBlock; 
} 
ようなものデリゲートメソッドでこの

typedef void (^currentLocation)(CLLocation *currentLocation); 
    // Create property using typedef 
    @property (strong) currentLocation objBlock; 
    - (void)updateCurrentLocation:(currentLocation)completionBlock; 

// 2.のような.hファイルで

// 1.宣言方法とブロック

//呼び出しは、これまでと同じように、locationというブロックが呼び出されたときにトリガーを取得します。

[self updateCurrentLocation:^(CLLocation *currentLocation) { 
     NSLog(@"%@", currentLocation); 
    }]; 
+0

私は同意しますが、何も返せませんでした。基本的に私は速度を返すことになる別の関数の中にブロックを書き込もうとしています – Nik391

+0

"didUpdateLocations"デリゲートメソッドが "updateCurrentLocation"と呼ばれるようになっている場合、位置を返さなければなりません。チェックデリゲートが呼び出しているかどうか。ブロックでは、それはあなたがコースのスピードを望むものを計算することができます。 – Vishnuvardhan

+0

わかりやすくありがとうございました – Nik391

関連する問題