MapView を含む ViewControllerを含むプロジェクトに取り組んでいます。
現在、このページは数回読み込まれ、閉じられています。
私が最初に実装したのは、xib に MapView を追加し、このページが読み込まれるたびに、ライブ バイトが 10 MB ずつ増加していたことです。
ソリューション1
次に、この問題の調査を行った後、MKMapView に単一のオブジェクトを使用し、それをAppDelegateで定義して、常に使用することがわかりました。
これを試してみたところ、メモリ使用量がある程度減少しましたが、しばらくすると、Received Memory Warningが原因でアプリがクラッシュしました。
クラッシュ後にアプリを再度起動すると、MapView ページを初めて開いたときにクラッシュしていました。この時点でのライブバイトは約 11 MB のみでした。
これは AppDelegate に mapview を追加するコードです
mapView=[[MKMapView alloc]initWithFrame:CGRectMake(0, 0, 300, 450)];
[self.window addSubview:mapView];
mapView.delegate=self;
mapView.hidden=YES;
これは、Mapview をロードするために使用したコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
latittude=[[[NSUserDefaults standardUserDefaults]valueForKey:@"LATITUDE"] floatValue];
longitude=[[[NSUserDefaults standardUserDefaults] valueForKey:@"LONGITUDE"] floatValue];
APPDELEGATE.mapView.frame=CGRectMake(0, 140, 320, 290);
}
-(void)viewDidAppear:(BOOL)animated
{
APPDELEGATE.mapView.hidden=NO;
CLLocationCoordinate2D location;
location.latitude = latittude;
location.longitude = longitude;
Annotation *a;
a=[[Annotation alloc]initWithCoordinate:location];
[APPDELEGATE.mapView addAnnotation:a ];
}
-(void)viewWillDisappear:(BOOL)animated
{
APPDELEGATE.mapView.hidden=YES;
}
ソリューション2
私が見つけた2番目の解決策は、ビューが消えたときにMapViewタイプを変更することでした。
そのため、型を変更し、デリゲートを nil に変更し、ViewWillDisappear のスーパービューから削除しました。
これでも違いはありませんでした。
どうすればこの問題を克服できますか?
ありがとう