2013-10-10 88 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