A ViewController
запускает LocationTracking. Я хочу, чтобы NSLog обновлял местоположение (когда симулятор находится на автостраде), но didUpdateLocations
регистрируется только при раскомментировании NSTimer
, я не могу понять, почему. Я чувствую себя совершенно глупым, спрашивая об этом, это, наверное, что-то простое, я новичок в этом и долгое время пытался его решить.Не удалось получить мое местоположение для обновления
ViewController:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults boolForKey:@"locationUpdate"]) {
LocationTracking *locationTracker = [[LocationTracking alloc] init];
[locationTracker startTracking];
NSLog(@"location tracking did");
//NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:locationTracker selector:@selector(logLast) userInfo:nil repeats:YES];
}
}
LocationTracking.h:
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface LocationTracking : NSObject <CLLocationManagerDelegate>
@property (nonatomic, strong) NSMutableArray *locations;
-(void) startTracking;
-(void) logLast;
@end
LocationTracking.m:
#import "LocationTracking.h"
@interface LocationTracking()
@property (nonatomic, strong) CLLocationManager *locationManager;
@end
@implementation LocationTracking
-(void)startTracking
{
self.locations = [[NSMutableArray alloc] init];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
[self.locationManager setDelegate:self];
[self.locationManager startUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"did update %@",[locations lastObject]);
}
-(void)logLast
{
}
didUpateLocations получить вызов на один раз или нет? –
, когда таймер запускается (не закомментирован), didUpdateLocations обновляет и регистрирует каждый раз, когда местоположение обновляется. Но когда таймер закомментирован, он вообще не регистрируется, и поэтому я не думаю, что он срабатывает или получает вызов. – amk26cap