2013-04-06 3 views
-1

J'essaie de créer cette application, lorsque vous appuyez sur un tablecell vous obtenez le ViewController, et la variable get est définie dans l'autre contrôleur de vue. Bien que je reçois quelques erreurs quand j'appuie sur le uitablecell.Objectif C - - [__ NSCFString _isAncestorOfFirstResponder] Erreur

Erreur:

2013-04-06 22:47:25.970 iFSX Guide[1069:907] Called 
2013-04-06 22:47:26.009 iFSX Guide[1069:907] -[__NSCFString  _isAncestorOfFirstResponder]: unrecognized selector sent to instance 0x1d562390 
2013-04-06 22:47:26.016 iFSX Guide[1069:907] *** Terminating app due to uncaught  exception 'NSInvalidArgumentException', reason: '-[__NSCFString _isAncestorOfFirstResponder]: unrecognized selector sent to instance 0x1d562390' 
*** First throw call stack: 
(0x319b22a3 0x3964c97f 0x319b5e07 0x319b4531 0x3190bf68 0x33832beb 0x338a837f 0x338548fb 0x33a95619 0x338a79b9 0x338a5fe7 0x339c83ef 0xa22a5 0x3387c28d 0x338fef81 0x322c0277 0x319875df 0x31987291 0x31985f01 0x318f8ebd 0x318f8d49 0x354ba2eb 0x3380e301 0xa19d1 0x39a83b20) 
libc++abi.dylib: terminate called throwing an exception 

Le code:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)in dexPath{ 
    NSLog(@"Called"); 
    Aircraft = indexPath.row; 

    [self performSegueWithIdentifier:@"ToSections" sender:self]; 

} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"ToSections"]){ 
     AirplaneSections *sections = (AirplaneSections *)segue.destinationViewController; 
     sections.plane = Aircraft; 
    } 
} 

J'ai découvert que c'est une erreur sur viewDidLoad sur le viewcontroller.

NSString *quickTemp = [NSString alloc]; 
switch (plane) { 
    case 0: 
     quickTemp = @"Boeing 737-800"; 
     break; 

    default: 
     break; 
} 
TitleLabel.text = quickTemp; 
*/ 

Je fais quelque chose de mal là-bas.

+0

Quel type de propriété est 'Aircraft'? Utilisez-vous ARC? – omz

+0

Avion est un "int", oui j'utilise ARC –

Répondre

0

Utilisez-vous ARC? Ce genre de problème indique généralement qu'il y a une erreur de mémoire quelque part. Fondamentalement, du code essaie quelque part d'accéder à un objet déjà publié. Cela fait tout kaboom.

Si vous n'utilisez pas ARC, vous devez l'activer. Après quoi, la prochaine chose à faire est de lancer l'analyseur statique. Réparer tout ce qui arrive.

Si cela ne résout pas le problème, dans Xcode, ajoutez un point d'arrêt qui s'arrête lorsqu'une exception Objective-C est levée. Cela devrait vous montrer où exactement ce problème se produit.

Si cela ne vous aide pas, exécutez votre code sous Instruments et l'outil Zombie. Cela vous montrera exactement où vous avez essayé d'accéder à la mémoire qui a déjà été libérée.

+0

J'ai découvert que le performSegue est le problème, quand je le commente l'application fonctionne, mais quand itøs là il dosent .... –

+0

@JackyBoy: Ce ressemble à une erreur de gestion de la mémoire du type que l'ARC aide à éviter, c'est donc une suggestion valable. – Chuck