最近、MapView が必要以上のメモリを使用しているように見えるという問題に遭遇しました。注釈の入力やデータのダウンロードなどを行っているすべてのメソッドを無効にし、基本的にアプリをマップ ビューだけに残しました。マップ ビューは初期化され、複数のビューでマップを使用するため、マップを通じて使用する Map Manager と呼ばれるシングルトン オブジェクトに割り当てられます。すべてのマップ処理メソッドもこのオブジェクトに存在します。アプリを実行すると、ズーム、スカルリング、パンなどが非常に途切れ途切れになり、動きが鈍くなります。最新の iPad Mini を使用しています。
iOS7 でアプリを実行すると、xCode 内でメモリ使用率が最大 180 MB のメモリで急増します。アプリを実行し、同時に Apple Maps を開いて操作すると、エラーが原因でアプリがクラッシュしました: Terminated due to Memory Pressure.
以下は、割り当てテストの実行中のマップ初期化子とインスツルメント プロファイルです。
+ (id)sharedInstance
{
static LBMapManager *mapManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Intialize the class
mapManager = [[self alloc] init];
// Intialize map
mapManager.mapView = [[MKMapView alloc] init];
mapManager.mapView.mapType = [[LBSettings getObjectForKey:kLBSettingsMapType] intValue];
mapManager.mapView.showsBuildings = YES;
mapManager.mapView.showsPointsOfInterest = YES;
mapManager.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
});
return mapManager;
}
写真: