94 votes

"wait_fences: impossible de recevoir la réponse: 10004003"?

J'obtiens cette erreur cryptique la première fois (et uniquement la première fois) de mon point de vue est chargé, à cause de la ligne de code suivante:

- (void)viewWillAppear:(BOOL)animated
{
    [textField becomeFirstResponder];
}

Il est notable (~3 – 4 secondes, même sur le simulateur) de retard en raison de ce que fait mon application ne répond pas sentir. Personne ne sait comment résoudre ce problème? Je ne trouve pas de documentation à ce sujet sur le site d'Apple, ou toutes les solutions ici ou sur Google.

Étrangement, la situation inverse qui se passe si j'ai mis la ligne en -viewDidAppear: au lieu de -viewWillAppear:; c'est, au lieu de l'impression de l'erreur que la première fois que le clavier est affiché et ne jamais encore une fois, l'erreur n'est pas imprimé la première fois, mais à chaque fois après. C'est la cause d'un mal de tête important pour moi.

104voto

Rob Napier Points 92148

Remplacez -viewDidAppear: , pas -viewWillAppear , et assurez-vous d'appeler [super viewDidAppear:] . Vous ne devez pas effectuer d'animation lorsque vous n'êtes pas à l'écran ("apparaîtra"). Et les documents -viewDidAppear: expliquent que vous devez appeler super parce qu'ils ont leurs propres choses à faire.

22voto

Corey Floyd Points 16747

J'ai été faire une erreur similaire lorsqu'rapidement:

  1. Rejetant une vue modal
  2. La mise à jour de la vue principale
  3. La présentation d'un nouveau modal vue

J'ai remarqué que je ne faisais que de le faire dans le simulateur et non sur l'appareil. En outre, j'ai été pris dans une boucle infinie.

Ma solution a été de retarder la présentation de la nouvelle modal vue. Il semble que rapidement la mise à jour de la vue de la hiérarchie causé certains sot de race condition d'Apple dans le code.

Avec cela à l'esprit, essayez ceci:

     - (void)viewDidAppear:(BOOL)animated{

            [super viewDidAppear:animated];
            [textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1];
  }

Vous pouvez avoir des problèmes présentant le clavier pour un UITextField que ins pas encore sur l'écran. Cela peut être à l'origine des problèmes similaires à la mienne.

Aussi, vous faites une pause de donner la hiérarchie de temps pour mettre à jour avant de présenter le clavier, juste au cas où.

Espérons que cette aide.

12voto

diachedelic Points 611

Vérifiez que vous n'interagissez qu'avec l'interface utilisateur sur le thread principal. J'ai eu wait_fences: failed to receive reply: 10004003 pendant que j'étais assis là en attendant un UIAlertView pour afficher pendant environ 5 secondes parce que le code pertinent a été exécuté sur un thread d'arrière-plan. Vous pouvez vous assurer en mettant votre code en bloc et en l'envoyant au thread principal:

 dispatch_async(dispatch_get_main_queue(), ^{
    if (!success) {
        // Inform user that import failed
        UIAlertView * importFailedAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ErrorTitle5", @"Import failed") 
                                                                     message:NSLocalizedString(@"Error5", @"Something went wrong") 
                                                                    delegate:nil 
                                                           cancelButtonTitle:NSLocalizedString(@"OK", nil) 
                                                           otherButtonTitles:nil];
        [importFailedAlert show];
    }
});
 

9voto

warehouselabs Points 91

Après avoir essayé tout ce que je pouvais trouver sur Google et que rien ne fonctionnait, c'est ce qui a résolu le problème pour moi. La clé est que je fais ces choses dans la méthode déléguée willDismissWithButtonIndex. Avant je le faisais ailleurs.

 - (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
    [myTextField resignFirstResponder];
    [myTextField removeFromSuperview];  
    [myTextField release];  
}
 

8voto

rlcoder Points 81

Si vous avez la ligne suivante dans viewDidLoad, cela peut provoquer ce message. Commentez la ligne suivante.

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; //This line should be commented
 

(Vous pouvez désactiver la barre d'état à partir du fichier plist d'application).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X