谷歌地图iOS SDK崩溃

时间:2013-10-25 08:32:55

标签: ios iphone objective-c google-maps google-maps-sdk-ios

我使用谷歌地图iOS SDK与故事板。应用程序从具有带有地图的根视图控制器的导航视图控制器开始。

@implementation MyViewController
@synthesize btnMyLock;
@synthesize btnNearby;

GMSMapView *mapView_;
- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:20
                                                        longitude:20
                                                             zoom:0];

     mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
     mapView_.myLocationEnabled = YES;

     self.view = mapView_;
     // Creates a marker in the center of the map.
     GMSMarker *marker = [[GMSMarker alloc] init];
     [marker setIcon:[UIImage imageNamed:@"pin"]];
     marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
     marker.title = @"Sydney";
     marker.snippet = @"Australia";
     marker.map = mapView_;

     mapView_.settings.compassButton = YES;

     [mapView_ addSubview:btnMyLock];
     [mapView_ addSubview:btnNearby]; 
}

按钮btnMyLock按下表视图控制器。在iOS 7中没关系。但iOS 6我的应用程序崩溃了。有时会崩溃EXC_BAD_ACCESS(代码= 1)或代码= 2

4 个答案:

答案 0 :(得分:1)

我使用Autolayout视图的问题。

答案 1 :(得分:0)

您忘记了第4步:“将GoogleMaps.bundle ”从Resources文件夹拖到您的项目中。

我建议将它放在Frameworks组中。出现提示时,确保未选中“将项目复制到目标组的文件夹”。我遇到了同样的问题,并修复了它。

答案 2 :(得分:0)

我不知道是否会导致问题,但我不会这样做:

self.view = mapView_;

只需将mapView_添加为子视图,例如:

[self.view addSubview:mapView_];

通常,当您对内存管理不善(例如,过早释放对象)时,会导致EXC_BAD_ACCESS崩溃。试着找出崩溃发生的对象。


在代码中创建按钮,而不是作为IBOutlets从xib创建。否则,由于您没有使用xib,因此未加载它们。

答案 3 :(得分:0)

使用Google地图时使用此代码,然后在导航到其他屏幕时检查其是否崩溃。

- (void)dealloc {
[super dealloc];
[mapView_ removeObserver:self
              forKeyPath:@"myLocation"
                 context:NULL];
}