J'ai récemment mis à jour Xcode 7 et mis à niveau mon iPhone vers iOS 9. J'ai développé et publié une application iOS qui fonctionnait parfaitement avec la dernière version d'iOS 8 et Xcode 6.
En essayant de suivre le processus de mise à jour de l'application pour la prise en charge d'iOS 9, j'obtiens l'erreur la plus ridiculement étrange qui me laisse perplexe.
J'ai effectué toutes les corrections de syntaxe automatiquement via Xcode, et mon application est désormais correctement construite. Cela fonctionne même bien au début.
J'ai un bouton qui sépare un contrôleur de vue avec un WebView. Ce contrôleur de vue charge un lien qui affiche une image, un site Web ou une vidéo YouTube. Le contenu est chargé parfaitement bien, comme toujours. Cependant, le programme se bloquera, redémarrera le simulateur (et mon iPhone) et m'enverra à l'écran de verrouillage lorsque je clique sur le bouton Précédent (je suis sur une pile de navigation).
Dans Xcode, je reçois les messages suivants:
Connexion XPC interrompue. Terminating car il n'y a pas d'application système.
Au fait, j'ai des analyses Flurry intégrées dans mon application, je ne sais pas si c'est un problème.
Comment puis-je résoudre ce problème? Mes recherches de connexions XPC ne semblent pas retourner des problèmes similaires aux miens. Je n'ai même pas la moindre idée de ce qu'est une connexion XPC, alors pourquoi est-ce tout de même dans mon application?
EDIT: J'ai trouvé une solution de contournement pour le problème. Je ne peux pas vraiment dire que c'est une solution.
Le blocage s’est produit lors de l’utilisation de la méthode self.navigationController? .PopViewControllerAnimated, lorsque défini sur true. Il m'est arrivé de mettre ceci à faux, et le crash s'arrête (maintenant la transition est affreuse).
Je ne sais pas pourquoi cela fonctionne et ajoute à ma confusion.
Le problème se trouvait aussi dans le story-board. J'ai créé un nouveau projet et exposé les points de vue et tout semblait bien fonctionner. J'ai trouvé ces quelques lignes dans la source du storyboard (clic droit sur le storyboard et sélectionnez afficher sous -> code source) qui n'étaient pas courantes entre la version de travail et la version endommagée:
<keyCommands>
<keyCommand/>
</keyCommands>
Je ne sais pas du tout ce que ces lignes sont censées faire, ni comment elles se sont glissées dans mon fichier de storyboard, mais c’était ce qui faisait planter l’application si fort que le téléphone devait redémarrer. J'ai enlevé ces lignes de mon projet principal et tout a encore fonctionné.
Cette erreur peut être provoquée par l'exécution répétée d'une boucle. Dans mon cas, c’était une boucle "pour" dans laquelle je réinitialisais la variable de comptage. Dès que j'ai ajouté un NSLog dans la boucle, c'était évident.
Je viens de faire face au même problème. Je ne sais pas si cela vous aidera, mais je pense aussi que cela vient du Storyboard:
Dans mon cas, le problème provient d'une UITextView. Chaque fois que j'essaie de changer le texte par défaut à l'intérieur, j'ai cette erreur. Si je laisse le texte par défaut ou le laisse vide, l'application fonctionne correctement. La création d'un IBOutlet et la modification du texte par programme fonctionnent également.
J'ai essayé avec d'autres éléments de l'interface utilisateur, mais seul UITextView semble avoir ce problème.
J'ai lutté avec exactement la même erreur. À travers un processus d’élimination, j’ai établi que cela n’avait rien à voir avec la classe, mais avec le story-board. Heureusement, je conserve des copies de sauvegarde régulières et j'ai essayé de comparer les story-boards pour établir ce que j'avais fait - mais je n'ai rien trouvé d'évident. La copie de sauvegarde a bien fonctionné et j'ai pu copier mes classes de contrôleur (de la copie défectueuse avec les modifications) dans la copie de sauvegarde et elles ont bien fonctionné.
Je pense qu'il y a peut-être un bug dans les storyboards.
J'ai le même message d'erreur lorsque je place une sous-vue dans la méthode -layoutSubviews:
-(void)layoutSubviews
{
[super layoutSubviews];
[self populateByImageViews];
}
Il provoque un cycle infini de processus de mise en page et bloque l'application. Ne placez pas de sous-vues dans cet endroit!
Supprimer la vue du texte de la vue dans Storyboard supprime l'erreur dans mon cas.
Dans valueChanged: méthode d'un UIControl, j'avais le même problème et j'ai donc créé le code dans valueChanged: à exécuter dans le thread principal, ce qui a résolu le problème.
@IBAction func valueChanged(sender: AnyObject) {
dispatch_async(dispatch_get_main_queue(), {
//code
}
}
Lorsque j'utilise QLPreviewController, je suis confronté à ce problème. Messages d'erreur comme suit,
XPC connection interrupted
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
XPC étant synonyme de communication interprocessus sous OS X, je pense donc que cela peut résoudre le problème,
dispatch_async(dispatch_get_main_queue(), ^{
// do what you want to do.
});