6

我的 iPad 专用应用程序(使用 iOS6)中的谷歌地图有一个奇怪的问题。我做了一个水平滚动视图,里面有两个视图。一个是详细信息视图(一些文本,没什么特别的),第二个视图是带有谷歌地图的视图控制器。这是我的应用程序中的通用方案(从两个视图构建的滚动视图)用于几个不同的目的。当我开始在带有 iOS6 的真实 iPad 上测试应用程序时,就会出现问题。应用程序在应该查看滚动视图时崩溃。但不是马上。开始时,可​​以正确查看滚动视图。然后我想用新数据构建一个新的滚动视图。它也很好,并且可以正确查看滚动视图。经过一些这样的操作后,我开始收到越来越多的错误日志,如下所示:

failed to make complete framebuffer object 8cdd

运行几次 scrollView 后,应用程序崩溃而没有任何其他错误。代码编辑器指向 main.m 文件,以及以下行:

int retVal = UIApplicationMain(argc, argv, nil, nil);

请指导我找出我做错了什么。我的视图控制器中负责查看谷歌地图的 viewDidLoad 方法在哪里:

-(void)viewDidLoad {
mapView.mapType = MKMapTypeSatellite;
mapView.showsUserLocation = YES; 

/* ANNOTATION (pin) */

CLLocationCoordinate2D annotationCoord;

annotationCoord.latitude = [self.restaurant.latitude doubleValue];
annotationCoord.longitude = [self.restaurant.longitude doubleValue];

// a pin with the info. 

MKPointAnnotation *annotationPoint = [[MKPointAnnotation alloc] init];

annotationPoint.coordinate = annotationCoord;
annotationPoint.title = self.restaurant.name;

// add annotation to the map

    [mapView performSelectorOnMainThread:@selector(addAnnotation:)
                                  withObject:annotationPoint
                                  waitUntilDone:YES];


[annotationPoint release];  

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (annotationCoord, 500, 500); 
[self.mapView setRegion:region animated:YES];

[super viewDidLoad];
}

并且无论我如何将带有谷歌地图的视图控制器推送到视图。它总是使我的应用程序崩溃:(。我试过这样:

[scrollView addSubview:self.googleMapViewController.view]; 

或者那个:

[[self navigationController] pushViewController:self.googleMapViewController animated:YES];

当我在模拟器上运行应用程序时,一切正常。我正在使用 XCode 4.5.1。

4

1 回答 1

0

我在我的一个项目中遇到了同样的问题。它是由内存泄漏引起的。如果您不删除它们,地图视图会消耗大量内存。它不会出现在模拟器上,因为计算机可以使用更多内存。只要确保在您不再需要地图视图时摆脱它们即可。我还建议使用 Instruments (Leaks) 运行应用程序——在这种情况下,它是一个非常有用的工具。

于 2013-05-09T20:07:04.073 回答