在阅读了有关堆栈溢出和其他一些文章的一些建议后,我实现了一个单例类,允许我调用一个方法来更新用户的当前位置。为了避免持续更新位置信息,我添加了一个StopUpdatingPosition调用。这是第一次正常工作,但是在调用失败后。
我认为这是因为在提供的示例中启动地理定位的方式,它会检查单例是否已经到位(?)
如果单例初始化,它会保留在内存中吗?在后续的电话中,我可以检查是否是这种情况,只是要求它开始更新位置?
这是我到目前为止所尝试的内容。
- (id)init {
self = [super init];
if(self) {
self.locationManager = [CLLocationManager new];
[self.locationManager setDelegate:self];
[self.locationManager setDistanceFilter:kCLDistanceFilterNone];
[self.locationManager setHeadingFilter:kCLHeadingFilterNone];
[self.locationManager startUpdatingLocation];
geocoder = [[CLGeocoder alloc] init];
}
return self;
}
+ (LocationFunction*)sharedSingleton {
static LocationFunction* sharedSingleton;
if(!sharedSingleton) {
@synchronized(sharedSingleton) {
sharedSingleton = [LocationFunction new];
}
}
return sharedSingleton;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
myLat = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
myLong = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
}
// Store the Long & Lat to global variables here
NSLog(@"Resolving the Address");
} else {
// Handle location lookup fail here
}
} ];
[manager stopUpdatingLocation];
}
我正在寻找一种从不同视图控制器调用外部类中的方法的方法。该方法获得用户的当前位置(Long& Lat),将信息记录在全局变量中,停止任何更新位置方法的请求,并在完成后通知视图控制器。
指针赞赏。答案 0 :(得分:0)
另一个stackoverflow question有一个答案可以提供解决方案。但请注意,调用不正确(我无法对答案发表评论 - 对于stackoverflow来说太新了!)。它应该引用“sharedManager”:
- (void)viewDidLoad
{
[super viewDidLoad];
[[MyClass sharedManager] startCapture];
}
希望这有助于任何人搜索。