我正在一個項目中,我有一個ViewController,其中有MapView。MapView加載時收到內存警告
現在這個頁面被加載和解散幾次。
我第一次實現的是,我在xib中添加了MapView,然後每當這個頁面加載時,活的叮咬用於增加10mb。
解決方法1
那麼對於這個問題做研究,我發現是使用單一對象的MKMapView和定義它的AppDelegate,並用它所有的時間之後。
我試過了,它在一定程度上減少了內存使用量,但是在某些時候應用程序因爲收到內存警告而再次崩潰。
現在,如果我在崩潰後再次啓動應用程序,那麼它在第一次打開MapView頁面時就會崩潰,此時的實時叮咬約爲11mb,僅爲012mb。
這是爲了在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
第二溶液我發現了改變MapView類型時視野中消失。
所以我改變了它的類型,把它的委託改爲了無,並從ViewWillDisappear的superview中移除。
即使這並沒有什麼區別。
任何想法我怎麼能克服這個問題?
謝謝
memoryWarning本身並不是一個問題,它告訴你係統內存不足。 你可以顯示viewDidLoad,viewWillAppear(和didAppear)和viewWillDisappear(和willDisappear)? –
@MarcoPace我編輯了我的問題。請查找您提到的所有方法。 – AtWork
set mapview = nil in viewWillDisAppear – karthika