это мой первый пост, но я постоянно читаю сайт. Я работаю над программой, которая занимается передачей 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 всегда устанавливается до того, как будут затронуты какие-либо кнопки (я вижу это в журнале). Если кто-то там может помочь мне с этим, пожалуйста, дайте мне знать. Это похоже на некоторые другие проблемы на форуме, но я пробовал все, что было рекомендовано до сих пор. Спасибо!