2009-12-11 5 views
0

Lorsque j'exécute ce code en mode de lancement de périphérique, il tire un "SIGABRT" sur le "[mapView setRegion: region animated: TRUE];" ligne. Cependant, je n'obtiens pas le problème en mode débogage ou simulateur.Le code de déblocage est-il différent du débogage?

Je suis novice en xcode. Qu'est-ce que je fais mal?

- (void)initUI { 
// add a map view in available area 
startupPage = [[CSNet alloc] init]; 
positionUpdatePage = [[CSNet alloc] init]; 
opponentsPage = [[CSNet alloc] init]; 
firePage = [[CSNet alloc] init]; 
checkinPage = [[CSNet alloc] init]; 
[self getStartup:FALSE]; 
UIImage *blueButton = [[UIImage imageNamed:@"blueButton.png"] stretchableImageWithLeftCapWidth:12.0f topCapHeight:0.0f]; 
UIImage *redButton = [[UIImage imageNamed:@"redButton.png"] stretchableImageWithLeftCapWidth:12.0f topCapHeight:0.0f]; 
UIImage *gpsImage = [UIImage imageNamed:@"gps_icon.png"]; 
[self initSounds]; 
[gpsButton setBackgroundImage:gpsImage forState:UIControlStateNormal]; 
[settingsButton setBackgroundImage:blueButton forState:UIControlStateNormal]; 
[joinButton setBackgroundImage:blueButton forState:UIControlStateNormal]; 
[fireButton setBackgroundImage:redButton forState:UIControlStateNormal]; 
[self UpdateIndicators]; 
MKCoordinateRegion region; 
region.span.latitudeDelta = [appDelegate.savedSpanLatitude floatValue]; 
region.center.latitude = [appDelegate.savedLatitude floatValue]; 
region.center.longitude = [appDelegate.savedLongitude floatValue]; 
mapHeight = self.view.frame.size.height; // - 50; 
mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, mapHeight)]; 
// viewtouch catches events on map 
viewTouch = [[CSViewTouch alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, mapHeight)]; 
viewTouch.multipleTouchEnabled = TRUE; 
[self.view insertSubview:mapView atIndex:0]; 
[mapView setDelegate:self]; 
mapType.selectedSegmentIndex = [appDelegate.savedMapViewType intValue]; 
[mapView setRegion:region animated:TRUE]; 
+0

La réponse à votre question principale est: oui, elle peut le faire et le fait souvent en raison d'optimisations. Quant à votre question implicite, "pourquoi est-ce que j'obtiens un avortement ici?" Je ne suis pas sûr. Quelle est la trace de votre pile et quelle exception, le cas échéant, est produite? –

Répondre

1

Vous ne définissez jamais region.span.longitudeDelta dans le code ci-dessus. Je recommande d'utiliser la fonction MKCoordinateRegionMake pour définir les deux valeurs et les deux deltas, de sorte que vous ne vous retrouvez pas avec des valeurs périmées ou aléatoires.

0

Le commentaire de Jason était précis et utile - je le «vérifierais» si possible. Mon code de version se comporte différemment. Une fois que j'ai regardé la pile (merci pour l'indice, Jason), j'ai réalisé que le code bugait quand mapView est mis à la longitudeDelta de 0. Ce comportement semble non seulement différer entre debug/release et device/simulator, mais apparemment cropped dans le plus récent iPhone OS.

Questions connexes