Iphone 我需要使用CLL定位

Iphone 我需要使用CLL定位,iphone,cllocation,Iphone,Cllocation,我需要从GPS上读取我的位置! 问题是我需要从方法上做出来 - (void)locationUpdate:(CLLocation *)location; 所以。。。这就是我的工作方式: 在.h文件中,我有这个 CLLocation *mylocation; 在-viewDidLoad中 mylocation = [[CLLocation alloc] init]; locationController = [[CLController alloc] init]; locationContro

我需要从GPS上读取我的位置! 问题是我需要从方法上做出来

- (void)locationUpdate:(CLLocation *)location;
所以。。。这就是我的工作方式:

在.h文件中,我有这个

CLLocation *mylocation;
在-viewDidLoad中

mylocation = [[CLLocation alloc] init];
locationController = [[CLController alloc] init];
locationController.delegate = self;
[locationController.locationManager startUpdatingLocation];
然后

如果我使用NSLog(在mylocation上),我就能看到我的真实位置! 但是在另一种方法中(一个iAction连接一个UIButton),我想使用“mylocation”! 它不起作用了,我不知道为什么

如果,在这个方法中,我尝试这样做

NSLog(@"%@", mylocation);
控制台将报告以下内容:

<+0.00000000, +0.00000000> +/- 0.00m (speed -1.00 mps / course -1.00) @ 3/10/11 7:21:24 PM Central European Time
否则应用程序会崩溃

这一行:

mylocation = location;
正在将mylocation的内存指针设置为location manager返回的内存指针,该指针稍后将被释放

编辑:

mylocation = [[CLLocation alloc] initWithLatitude:location.coordinate.latitude longitude:location.coordinate.longitude];
这一行:

mylocation = location;
正在将mylocation的内存指针设置为location manager返回的内存指针,该指针稍后将被释放

编辑:

mylocation = [[CLLocation alloc] initWithLatitude:location.coordinate.latitude longitude:location.coordinate.longitude];
当然,在我的IBAction中,我也有

mylocation = [[LCLocation alloc] init];
所以得到的是零值,因为您总是用新创建的空白位置覆盖位置值-您不应该这样做

导致应用程序崩溃的问题是,在
locationUpdate
方法中,您会得到自动释放的值,因此为了确保该值在该方法之外有效,您必须保留该值。(不要忘记释放旧值)。最简单的方法是为myLocation ivar创建一个应用程序并使用它访问ivar:

// .h file

@property (nonatomic, retain) CLLocation *myLocation;

// .m
@synthesize myLocation;
... 
- (void)locationUpdate:(CLLocation *)location {
    self.mylocation = location;
}

- (void) dealloc{
   [myLocation release]; 
   myLocation = nil;

   ...
   [super dealloc];
}
当然,在我的IBAction中,我也有

mylocation = [[LCLocation alloc] init];
所以得到的是零值,因为您总是用新创建的空白位置覆盖位置值-您不应该这样做

导致应用程序崩溃的问题是,在
locationUpdate
方法中,您会得到自动释放的值,因此为了确保该值在该方法之外有效,您必须保留该值。(不要忘记释放旧值)。最简单的方法是为myLocation ivar创建一个应用程序并使用它访问ivar:

// .h file

@property (nonatomic, retain) CLLocation *myLocation;

// .m
@synthesize myLocation;
... 
- (void)locationUpdate:(CLLocation *)location {
    self.mylocation = location;
}

- (void) dealloc{
   [myLocation release]; 
   myLocation = nil;

   ...
   [super dealloc];
}

否:错误:左值必须作为赋值的左操作数(我认为我不能使用mylocation.coordinate.xxx)否:错误:左值必须作为赋值的左操作数(我认为我不能使用mylocation.coordinate.xxx)