Frage

Ich habe einige Speicherprobleme mit CLLocation.

CLLocation *annotation = [[CLLocation alloc] initWithLatitude:[[tempDict objectForKey:@"lat"] doubleValue] longitude:[[tempDict objectForKey:@"lon"]doubleValue]];
CLLocation *item2 = [[CLLocation alloc] initWithLatitude:[newLatString doubleValue] longitude:[newLongString doubleValue]];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%.1f km",[item2 distanceFromLocation:annotation]/1000];
[annotation release];
[item2 release];

Also habe ich versucht, dies zu tun, aber ich erkannte, dass Sie nicht die Anmerkung des Koordinaten festlegen.

CLLocationCoordinate2D tempCoordinate = annotation.coordinate;
tempCoordinate.latitude = [[tempDict objectForKey:@"lat"] doubleValue];
tempCoordinate.longitude = [[tempDict objectForKey:@"lon"] doubleValue];
    annotation.coordinate = tempCoordinate;

Gibt es eine Abhilfe das? Ich will nicht alloc / Initing ein CLLocation jedes Mal cellForRowAtIndexPath sein heißt ..

War es hilfreich?

Lösung

Ihr resultierendes Objekt ist ein NSString - nur eine Klasse erstellen, die eine NSString enthält, sowie Referenzen / ivars der Zwischendaten, wo nötig. einen Beobachter Idiom dann verwenden, nur um die Zellen zu aktualisieren, wenn die Zeichenfolge ändert (es so gestalten, die Saite auf den Koordinaten abhängt). Sie könnten wahrscheinlich eine Klasse machen, die eine Reihe von Argumenten bei der Initialisierung (z-Koordinaten), erzeugt eine NSString während der Initialisierung und dann beziehen sich auf das Ergebnis, wenn Ihre Daten ändert sich nie erfolgt. es hängt wirklich davon ab, welche Daten Sie mutieren erwarten, und bei welcher Frequenz.

Andere Tipps

  

Ich will nicht alloc / Initing a sein   CLLocation jedes Mal   cellForRowAtIndexPath genannt wird ..

Warum nicht? Wissen Sie, es Performance-Probleme verursacht? Sie Freigabe sie sofort, so dass sie zusätzliche Speicher nicht einnehmen werden. CLLocation sieht aus wie eine ziemlich leichte Klasse, und die Objective-C-Laufzeit ist stark optimiert, so dass sie wahrscheinlich alloc / init ziemlich schnell. Bis Sie sehen Scrollen / perf / Speicher-Ausgabe, würde ich mit gehen, was funktioniert und ist einfach zu pflegen.

  

Vorzeitige Optimierung ist die Wurzel aller Übel - Donald Knuth

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top