iPhone GPS の「ランキーパー」タイプのアプリで少し問題が発生しています。ほとんどすべての点で、アプリは問題なく動作します。私が設計した方法は、CLLocation オブジェクトを配列に追加し、そのオブジェクトの配列を MySQL データベースに格納することです。次に、マップビューを開くと、サーバーから配列を取得し、少し操作して、データを使用してマップにピンを追加します。
私が言うように、これはすべて正常に機能しており、私の机に座っているときにシミュレーターとデバイスで美しくうまく機能します (そして、楽器を使用して - 漏れはありません)。ただし、デバイスでアプリをテストし、実際に家を出て通りを15分歩いたところ、CLLocationManagerオブジェクトの更新が停止し、配列がMySQLにPOSTされた時点でアプリがクラッシュしました-ほぼ確実に(私は思う)メモリの問題のため。
そういうわけで、私は比較的初心者なので、優しくしてください。オブジェクトを配列に格納するより効率的な方法を開発することについてアドバイスを探しています。アプリを溶かします。
私が使用しているコードの(選択)は次のとおりです。
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
// CLocation オブジェクトが有効かどうかを判断するコードと、他にも 1 つまたは 2 つの小さなことを取り出していることに注意してください。
if (recording == YES) {//the start button has been pressed but the stop button hasn't.
if (alreadyBeenRound == NO) {
if (firstRecord == YES) {
//create the pointsonRoute array
if (pointsOnRouteExists == NO) {
pointsOnRoute = [[NSMutableArray alloc] init];
pointsOnRouteExists = YES;
}
[pointsOnRoute removeAllObjects];
firstRecord = NO; //after setting first record, can move on
}
[pointsOnRoute addObject:newLocation];
//more stuff taken out here
alreadyBeenRound = YES;
} else {
[pointsOnRoute addObject:newLocation];
}
//I do release the array