質問
I 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;
この問題を回避するには、これはありますか?私はしたくないのalloc / INITING A CLLocation毎回cellForRowAtIndexPathが呼ばれる..
解決
あなたの結果のオブジェクトはNSStringのです。次に、文字列の変更は(文字列の座標に依存するように設計する)ときにだけ細胞を更新し、観察者のイディオムを使用。おそらく、初期化時に引数のセットを取り、クラス(例えば座標)を行い、初期化時にNSStringのを作成し、あなたのデータは変更されない場合は、結果を参照することができます。それは実際のデータは、あなたが変異し、そしてどのような頻度で期待するものに依存します。
他のヒント
私はなりたくないのalloc / INITING A CLLocation毎回 cellForRowAtIndexPathが呼ばれる..
なぜいけないのでしょうか?あなたはそれがパフォーマンスの問題を引き起こしている知っていますか?彼らは、余分なメモリを占有していないので、あなたは、すぐにそれらをリリースしています。かなり軽量クラス、およびObjective-CランタイムのようなCLLocationのルックスが重くので、おそらくのalloc / initをかなり迅速に、最適化されています。あなたが/ PERF /メモリの問題をスクロール表示されるまで、私は動作し、維持することが容易であるものとなるだろう。
時期尚早の最適化は諸悪の根源である - ドナルド・クヌースする