Вопрос

У меня некоторые проблемы с памятью с 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];

Поэтому я попытался сделать это, но я понял, что вы не можете установить координату аннотации.

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

Есть ли обходное путь это? Я не хочу быть расходом / утиливающим слоем каждый раз, когда называется CellforlaTindexPath.

Это было полезно?

Решение

Ваш результирующий объект представляет собой NSString - просто создайте класс, который содержит NSString, а также ссылки / ивар промежуточных данных, где это необходимо. Затем используя IDIOM наблюдателя, просто обновите ячейки при изменении строки (создайте ее, чтобы строка зависит от координат). Возможно, вы можете сделать класс, который принимает набор аргументов при инициализации (например, координаты), создает NSString во время инициализации, а затем относится к результату, если ваши данные никогда не меняются. Это действительно зависит от того, какие данные вы ожидаете, будут мутате, и на какой частоте.

Другие советы

Я не хочу быть расходом / утиливающим слоем каждый раз, когда называется CellforlaTindexPath.

Почему бы нет? Вы знаете, что это вызывает проблемы с производительностью? Вы выпускаете их сразу, поэтому они не занимают дополнительную память. Clllocation выглядит как довольно легкий класс, и время выполнения объекта-C сильно оптимизирована, поэтому они, вероятно, Alloc / init довольно быстро. Пока вы не увидите проблему прокрутки / Perf / Memory, я бы пошел с тем, что работает и легко поддерживать.

Преждевременная оптимизация является корнем всего зла - Дональд Кнут

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top