2013-08-20 4 views
1

J'ai une application iOS 7 J'écris et quand l'application lance d'abord si je fais pivoter au paysage, puis de nouveau au portrait de l'application devient gelé/ne répond pas. Aucun message d'erreur n'a été affiché ou aucun journal n'a été indiqué. Cependant, si j'ouvre/présente une nouvelle vue avant la rotation, il n'y a pas de problèmes quand je reviens à la vue racine et que je la fais pivoter pour essayer de recréer le problème. La vue racine est dans un contrôleur de navigation fait dans le storyboard. Je n'ai aucune implémentation des méthodes pour écouter ou gérer les événements de rotation. Les seules choses qui se produisent lorsque l'application est ouverte est une demande d'API REST est envoyée et la vue de table est mise à jour. Est-ce que cet appel asynchrone pourrait me faire perdre mon thread d'interface utilisateur principal? (Je peux poster le code nécessaire pour la vue racine si nécessaire.) Le code utilisé pour l'API provient du SDK de StackMob.com.iOS App Rotation provoque le gel

Edit: j'ai pu recréer avec iOS 6.1

+1

... peut-être à cause de cela est toujours juste _beta_ et il est encore sous NDA? – holex

+0

Désolé, je dois préciser que j'ai recréé sur iOS 6 – mholtzscher

+0

Avez-vous par hasard mettre à jour votre interface utilisateur à partir de l'appel asynchrone qui s'exécuterait sur un autre thread? Et en mettant à jour l'interface utilisateur, je veux dire aussi quelque chose d'aussi simple que d'obtenir la valeur d'une propriété texte de UILabel. Cela pourrait expliquer le problème. – Krumelur

Répondre

1

j'ai pu résoudre le problème avec le contrôle de rafraîchissement en l'enveloppant dans un chèque conditionnel. Il semble que je frappais un cas de bord.

[self.managedObjectContext executeFetchRequest:purchaseFetch onSuccess:^(NSArray *results) { 

    self.purchases = [NSMutableArray arrayWithArray:results]; 
    [self.tableView reloadData]; 
    [self.HUD hide:YES]; 
    if([self.refreshControl isRefreshing]){ //this check solved the freezing problems 
     [self.refreshControl endRefreshing]; 
    } 
} onFailure:^(NSError *error) { 
    [self.HUD hide:YES]; 
    // Log details of the failure 
    NSLog(@"Error: %@", error); 
}]; 
Questions connexes