まず、私はiOSDevとObjective-Cを初めて使用します。ですから、愚かな質問やコードは許してください。
私はiPhoneで位置情報サービスをテストしてきました。NSTimerによって起動される次のコードがあります。
- (void)startLocationTracking
{
if(self.locationManager==nil){
_locationManager=[[CLLocationManager alloc] init];
_locationManager.delegate=self;
_locationManager.desiredAccuracy=kCLLocationAccuracyBest;
_locationManager.distanceFilter=1;
self.locationManager=_locationManager;
}
if([CLLocationManager locationServicesEnabled]){
[self.locationManager startUpdatingLocation];
}
}
そして、これが私のロケーションマネージャー機能です:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
[self timerLog];
NSString *deviceID = [self getUUID];
double lat = newLocation.coordinate.latitude;
double lon = newLocation.coordinate.longitude;
double alt = newLocation.altitude;
double dir = newLocation.course;
double spd = newLocation.speed;
double ha = newLocation.horizontalAccuracy;
double va = newLocation.verticalAccuracy;
NSDateFormatter *formatter;
NSString *ts;
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
ts = [formatter stringFromDate:[NSDate date]];
[self geoTrackingWS :deviceID :lat :lon :alt :dir :spd :ha :va :ts];
[manager stopUpdatingLocation];
}
何らかの理由で、私の関数geoTrackingWS
はランダムに複数回起動しています。NSTimerは(テストとして)1分ごとに実行されており、正常に動作する場合もあれば、geoTrackingWS
1回だけ呼び出す場合もありますが、2〜3回ヒットする場合もあります。
ロギングを実行しましたが、NSTimerが正常に動作し、正常に起動していることがわかります。
自分の携帯電話の別のアプリケーションと関係があるように感じますが、よくわかりません。
これに関するヘルプや洞察は素晴らしいでしょう。
ありがとう