CLLocation iVar теряет значение, становится нулевым в середине программы - PullRequest
0 голосов
/ 19 апреля 2011

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

1 Ответ

0 голосов
/ 19 апреля 2011

удаление неатома должно помочь

...