0

我有用户当前位置和注释引脚位置。当用户点击一个按钮时,应用程序开始计算用户当前位置和图钉位置之间的距离。这是我的代码:

- (IBAction)done:(id)sender {

[Locate startUpdatingLocation];
CLLocation *current;
CLLocation *pin;
do{
    current=[[CLLocation alloc]initWithLatitude:Locate.location.coordinate.latitude longitude:Locate.location.coordinate.longitude];
    pin=[[CLLocation alloc]initWithLatitude:arrived.latitude longitude:arrived.longitude];

}while([current distanceFromLocation:pin]>1000);

}

问题是,当我单击此按钮(完成)时,它似乎进入了一个无限循环并且应用程序停止工作。

4

1 回答 1

0

您应该使用 if 语句,而不是 for 循环。该循环将一直执行,直到用户在引脚 1000 米范围内。

- (IBAction)done:(id)sender {

    [Locate startUpdatingLocation];
    CLLocation *current;
    CLLocation *pin;

    if ([current distanceFromLocation:pin] > 1000) {
        current = [[CLLocation alloc]initWithLatitude:Locate.location.coordinate.latitude longitude:Locate.location.coordinate.longitude];
        pin = [[CLLocation alloc]initWithLatitude:arrived.latitude longitude:arrived.longitude];
   }

}

我想一旦用户的当前位置发生变化,您会想要重新调用此方法。

于 2013-04-12T17:38:25.930 回答