2013-10-10 89 views
0

我正在一個項目中,我有一個ViewController,其中有MapViewMapView加載時收到內存警告

現在這個頁面被加載和解散幾次。

我第一次實現的是,我在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中移除。

即使這並沒有什麼區別。

任何想法我怎麼能克服這個問題?

謝謝

+0

memoryWarning本身並不是一個問題,它告訴你係統內存不足。 你可以顯示viewDidLoad,viewWillAppear(和didAppear)和viewWillDisappear(和willDisappear)? –

+0

@MarcoPace我編輯了我的問題。請查找您提到的所有方法。 – AtWork

+1

set mapview = nil in viewWillDisAppear – karthika

回答

0

在應用程序委託中存儲MapView似乎有點奇怪的解決方案。我會回到它原先包含在單個控制器中的狀態。

我第一次實現了,我在廈門國際銀行,並加入MapView類,然後 每一個加載這個頁面,然後用活通過叮咬10MB增加時間。

這是你的問題,它看起來像內存泄漏。如果您正確處理對象/內存,則應用程序大小不應增加。確保你正在使用弧,並檢查你是否在viewWillDisappear方法中設置了任何必需的對象(例如NSTimers,NSNotifications)爲零。

+0

忘記所有這些我的編碼。試着用包含地圖的一個視圖進行簡單的演示,而不是任何額外的編碼。檢查此項目的分配內存。如果也面臨同樣的問題。 – AtWork