2016-08-06 5 views
2

У меня есть EXC_BAD_ACCESS, который сводит меня с ума! Я пытаюсь создать пользовательский GMSCircle и когда я назначить экземпляр GMSMapView, это может вызвать крах ...EXC_BAD_ACCESS с GMSMapView

Любой человек может помочь мне, это код:

... 
@property (nonatomic, strong) GMSMapView *mapView; 
@property (nonatomic, strong) PGCRadarCircle *circle; 
... 
_mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
... 
_circle = [PGCRadarCircle radarWithPosition:[PGCLocationManager instance].currentLocation.coordinate 
               map:_mapView 
               radius:500]; 

и

PGCRadarCircle.h 

... 
@property (nonatomic, strong) GMSMapView* map; 
... 

- (id)initWithPosition:(CLLocationCoordinate2D)coordinate map:(GMSMapView*)mapView radius:(CLLocationDistance)radius { 
    if (self = [super init]) 
    { 
     self.numberOfPulse = 2; 
     self.map = mapView; 
     self.position = coordinate; 
     self.radius = radius; 
     self.fillColor = [UIColor colorWithWhite:1.0 alpha:0.5]; 
     self.strokeColor = [UIColor colorWithWhite:0.9 alpha:0.5]; 
     self.strokeWidth = 1; 
     self.running = false; 
     self.waves = [[NSMutableArray alloc] init]; 
     self.duration = 2; 


     GMSCircle *wave = [GMSCircle circleWithPosition:self.position radius:0]; 
     wave.fillColor = _fillColor; 
     wave.strokeColor = _strokeColor; 
     wave.strokeWidth = _strokeWidth; 
     wave.map = _map; <--- EXC_BAD_ACCESS at this line 

     [_waves addObject:wave]; 

     [self initWaves]; 
    } 

    return self; 
} 

И скриншот стека:

screenshot

object

Спасибо.

+0

вы используете ARC? – Droppy

+0

Привет @Droppy, да, я использую Xcode 7 с ARC. – aliasdoc

+0

ОК, пожалуйста, разместите полный журнал сбоев или трассировку стека. – Droppy

ответ

0

У меня была та же проблема. Моя EXC_BAD_ACCESS исчезла после того, как я установил радиус круга перед назначением карты (GMSMapView) в GMSCircle. Поэтому попробуйте поместить строку self.map = mapView; в ваш код ниже. Надеюсь, это поможет вам!

1

Эта проблема может быть потому, что ваша координата недействителен, попробуйте поставить галочку в нем:

if (CLLocationCoordinate2DIsValid(self.position)) { 
    wave.map = _map; 
} 
Смежные вопросы