3

我使用带有情节提要的谷歌地图 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 推动 Table View Controller。在 iOS 7 中没问题。但是 iOS 6 我的应用程序崩溃了。有时会因 EXC_BAD_ACCESS (code=1) 或 code=2 崩溃

4

4 回答 4

1

我使用自动布局视图的问题。

于 2013-10-30T08:39:41.273 回答
0

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

我建议把它放在框架组中。出现提示时,确保未选择“将项目复制到目标组的文件夹”。我遇到了同样的问题,这解决了它。

于 2013-10-25T09:02:36.400 回答
0

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

self.view = mapView_;

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

[self.view addSubview:mapView_];

一般来说,EXC_BAD_ACCESS 崩溃是由于内存管理不善(例如,一个对象被过早地释放)造成的。尝试找出崩溃发生在哪个对象上。


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

于 2013-10-25T09:50:44.103 回答
0

当您使用谷歌地图时使用此代码,然后在您导航到另一个屏幕时检查它是否崩溃。

- (void)dealloc {
[super dealloc];
[mapView_ removeObserver:self
              forKeyPath:@"myLocation"
                 context:NULL];
}
于 2015-06-05T07:12:30.693 回答