【发布时间】:2013-11-02 19:45:14
【问题描述】:
我想从应用程序的其他地方调用一个方法来获取在应用程序委托中获取的用户位置。从另一个视图控制器调用CLLocation *getCurLoc = [AppDelegate getCurrentLocation]; 时,没有返回任何内容。
应用代理是,
@synthesize locationManager;
CLLocation *location;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
locationManager.desiredAccuracy=kCLLocationAccuracyKilometer;
[locationManager startUpdatingLocation];
return YES;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
[locations lastObject];
[manager stopUpdatingLocation];
CLLocation *location = [locations lastObject];
}
+(CLLocation *)getCurrentLocation{
return location;
}
将其更改为带有“-”的实例方法不起作用。是否应该将“位置”作为实例?应该将委托制作成一个实例,还是有更好的方法从其他地方访问它?
【问题讨论】:
-
你的
CLLocation *location应该被实现为一个ivar 或作为一些保存数据(模型)的类的属性。
标签: ios objective-c delegates cllocationmanager