我是用户当前的loaction和注释引脚位置。 当用户点击按钮时,应用程序开始计算用户当前位置和引脚位置之间的距离。 这是我的代码:
- (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);
}
问题是,当我点击此按钮(完成)时,它似乎进入无限循环,应用程序停止工作。
答案 0 :(得分: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];
}
}
我想你会想要在用户的当前位置发生变化后重新调用此方法。