ここで多くのcurrentLocationの質問を見てきましたが、コアロケーションのupdateLocationメソッドでは、ユーザーが選択した2つのポイント間の距離を測定できないため、2つの別々のIBActionを使用して2つのポイントを設定しようとしています。たとえば、人が町の片側に立っている場合、ボタンをクリックするとそれがlocAとして設定され、次に町の反対側に移動して別のボタンをクリックすると、それがlocBとして設定されます。 3番目のボタンをクリックすると、2つの間の距離が計算されます。これを実装する方法について何かアイデアはありますか?
私はこれをやろうとしました:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)setPointOne{
locA = [[CLLocation alloc] initWithLatitude:locationManager.location.coordinate.latitude longitude:locationManager.location.coordinate.longitude];
}
- (IBAction)setPointTwo{
locB = [[CLLocation alloc] initWithLatitude:locationManager.location.coordinate.latitude longitude:locationManager.location.coordinate.longitude];
}
- (IBAction)calculateDistance{
CLLocationDistance distance = [locA distanceFromLocation:locB];
totalDistance.text = [NSString stringWithFormat:@"Distance: %f Meters", distance];
[locA release];
[locB release];
}
これを行うと、すべてのボタンがクラッシュします
クラッシュログは次のとおりです。
-[ViewControllerの場所]:認識されないセレクターがインスタンス0x1fd36b60に送信されました2012-11-10 16:38:38.567 MeasureIt [3043:907] *キャッチされない例外'NSInvalidArgumentException'、理由:'のためにアプリを終了します-[ViewControllerの場所]:認識されないセレクターインスタンス0x1fd36b60' *に送られた(0x3a4f42a3 0x343e397f 0x3a4f7e07 0x3a4f6531 0x3a44df68 0x337110a5 0x33711057 0x33711035 0x337108eb 0x33710de1 0x336395f1 0x33626801 0x3362611b 0x388095a3 0x388091d3 0x3a4c9173 0x3a4c9117 0x3a4c7f99 0x3a43aebd 0x3a43ad49 0x388082eb 0x3367a2f9 0xd5a27 0x37ca6b20)のlibc ++ abi.dylib:例外をスロー呼ばTERMINATE(第スローコールスタックlldb)