Frage

Ich bin noch ziemlich neu zu programmieren, so habe ich so etwas wie eine Noob Frage. Wenn Sie eine Instanz Variable haben, in meinem Fall vom Typ CLLocationManager, in meiner appDelegate.m Datei, dachte ich, ich könnte meine CLLocationManager Instanzvariable in der applicationDidFinishLaunching Methode zuzuordnen und initialisieren. Und dann konnte ich einen Knopf startUpdatingLocation in einer anderen Methode verwenden (da ich es von einer anderen Klasse bin Aufruf). Dies scheint nicht zu arbeiten und ich denke, dass ich gebraucht alloc / init in der gleichen Methode, die ich startUpdatingLocation. Ist das wahr? Muss ich stopUpdatingLocation in der gleichen Methode? Mein Code ist unten:

(locationManager is declared as a property)


- (void)stopUpdating {
    [locationManager stopUpdatingLocation];
}

- (double)distanceTraveled {
    return distanceTraveled;
}

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after application launch
    [window addSubview:rootController.view];    
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [window makeKeyAndVisible];
}

- (void)startUpdating {
    [locationManager startUpdatingLocation];
}

Es scheint, wie sollte ich es tun mehr wie:

- (void)startUpdating {
locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}

Wenn soll ich es auf diese zweite Art und Weise tun, ist es, weil, dass der Umfang des CLLocationManager Objekt nur für das Verfahren ist es in ist? Ich dachte, es als Instanzvariable, die würde ich in der Lage sein, es in anderen Methoden zu verwenden, und ich konnte ein separates Verfahren für startUpdatingLocation und stopUpdatingLocation hat. Danke.

War es hilfreich?

Lösung

Was Sie ursprünglich gedacht, ist richtig. Wenn Sie eine Instanzvariable haben diese Variablen während der gesamten Lebensdauer des Objekts (in diesem Fall AppDelegate) zur Verfügung bleiben.

Wenn das, was Sie tun, nicht funktioniert, dann ist es, weil einige andere Frage. Sie nicht eine neue CLLocationManager jedes Mal, wenn startUpdating nennen.

zuweisen müssen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top