这是我的第一篇文章,但我一直在阅读该网站。我正在开发一个程序来处理在多个类之间传递CLLocation *。它开始于我的app委托使用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(我可以在日志中看到它)。如果有人可以帮我这个,请告诉我。这看起来类似于论坛上的其他一些问题,但我已经尝试了迄今为止推荐的所有内容。谢谢!
答案 0 :(得分:0)
删除非原子应该有帮助