0

这是我的第一篇文章,但我一直在阅读该网站。我正在开发一个处理在多个类之间传递 CLLocation* 的程序。它从我的应用程序委托使用 CLLocationManager 查找当前位置开始。找到位置后,didUpdateToLocation: newLocation: fromLocation 方法将此位置设置为另一个名为 queryPage 的类:

//AppDelegate.m
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *) newLocation fromLocation:(CLLocation *)oldlocation {
     currentLocation = newLocation;
     [queryPage setLocation:currentLocation];
}

在这里,我可以记录位置,一切正常。然后,在queryPage 中,setLocation 可以接收到CLLocation 并记录下来,没有问题。但是,稍后在我的代码中,button1 和 button2 等方法无法访问 currentLocation。button1 有时可以记录它,而 button2 通常记录“(null)”。这是QueryPage.h:

//QueryPage.h
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

@interface QueryPage : UIViewController {
     CLLocation *currentLocation;
}
@property (nonatomic, retain) CLLocation *currentLocation;
-(void)setLocation:(CLLocation*)location;

和实施文件:

//QueryPage.m
#import QueryPage.h
@implementation QueryPage
@synthesize currentLocation;

...

-(void)setLocation:(CLLocation*)location
{
     self.currentLocation = location;
}

...

-(IBAction)button1:(id)sender
{
     NSLog(@"button1: %@", currentLocation);
}

...

-(IBAction)button2:(id)sender
{
     NSLog(@"button2: %@", currentLocation);
}

我认为我必须以错误的方式设置/保留 currentLocation,但我不知道如何。我已经搜索了几天试图正确处理内存,这就是我所得到的。我尝试保留 currentLocation 和许多其他我可以在网上找到的东西。我知道 IB 中的连接很好(每次触摸它们时我都会记录它),并且 currentLocation 总是在触摸任何按钮之前设置(我可以在日志中看到它)。如果有人可以帮助我解决这个问题,请告诉我。这看起来类似于论坛上的其他一些问题,但我已经尝试了迄今为止推荐的所有问题。谢谢!

4

1 回答 1

0

删除非原子应该有帮助

于 2011-04-18T22:14:08.940 回答