web-dev-qa-db-fra.com

Xcode 8 se bloque/ne répond pas à l'ouverture du storyboard

Je suis récemment passé à Xcode 8 et mon projet à Swift 3. Tout a bien fonctionné pendant un petit moment. Le chargement du storyboard a toujours été lent (même sous Xcode 7) et était à peu près identique à celui de Xcode 8. J'imaginais que c'était parce que je suis sur un Macbook Pro plus ancien (fin 2011). 

Mais récemment, parfois, Xcode se bloquait lorsque j'essayais d'ouvrir le storyboard. Et depuis hier, c'est TOUJOURS «pendu». Xcode ne répond plus et je dois forcer la quitter.

Dans Activity Monitor, je vois que Xcode utilise 102% de l’utilisation de l’UC et de la mémoire (plus de 10 Go si je le laisse).

Maintenant, je suis vraiment bloqué car lorsque j'ouvre Xcode, il ouvre immédiatement mon projet et souhaite ouvrir le story-board. Je ne peux même pas changer pour un fichier Swift. Je ne reçois plus la fenêtre où je choisis mon projet. Donc, je ne peux plus ouvrir mon projet sans que Xcode ne réponde plus. Même lorsque je double-clique sur un autre projet pour ouvrir Xcode, celui-ci tente toujours d'ouvrir mon projet (sur le storyboard).

J'ai essayé un certain nombre de choses (basées sur SO discussions que j'ai pu trouver sur des problèmes similaires avec des versions plus anciennes de Xcode):

  • Xcode supprimé et contenu de ˜/Library/Developer supprimé. Puis réinstallé Xcode.
  • Suppression du contenu de var/folder
  • Suppression du contenu du dossier de données dérivé
  • Redémarrer le Macbook

Mon prochain essai sera de télécharger la version bêta de Xcode 8.1. Mais vraiment, plutôt ne pas faire ça. 

D'autres suggestions sur des choses que je pourrais essayer?

SMALL UPDATE: Nous avons réussi à effacer 'l'état' de Xcode là où il ouvre mon projet par défaut et l'ouvre également sur le story-board. A fait cela par:

  • Suppression du dossier ~/Bibliothèque/Etat de l'application enregistrée/com.Apple.dt.Xcode.savedState (la fenêtre de projet récente s'affichera à nouveau au démarrage).
  • Pour empêcher également le projet de charger un fichier spécifique à l'ouverture du fichier, je suis allé au contenu de .xcworkspace (dans mon dossier de projet), puis j'ai supprimé /xcuserdata/myusername.xcuserdatad/UserInterfaceState.xcuserstate. Maintenant, le projet s'est ouvert sans aucun fichier sélectionné.

Pourtant ... le problème principal reste. Lorsque je clique sur mon storyboard, Xcode ne répond plus. 

25
guido

D'après mon expérience, pour un projet ancien, l'ouverture avec XCode8, il est urgent de vous poser une question sur le périphérique par défaut avec lequel visualiser le storyboard. Cette question est si critique que, jusqu’à ce que vous y répondiez, vous ouvrez une fenêtre de dialogue invisible jusqu’à ce que XCode ne réponde plus.

Quelques solutions ont fonctionné pour moi:

  1. Si vous obtenez une fenêtre de réactivité de 1,5 seconde au démarrage de XCode, passez immédiatement à un fichier non-storyboard. Si vous utilisez un éditeur de volet fractionné avec le storyboard dans le panneau auxiliaire, désactivez-le.
  2. Créez un autre storyboard, ouvrez-le, XCode vous posera la question sur le périphérique par défaut. 
  3. Répondez à la question, enregistrez l'état du projet et espérez ouvrir le storyboard

La suppression de ces fonctionnalités m'a permis de rouvrir le storyboard

    <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
    <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
    <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
13
Alex Stone

Je suis tombé sur le même problème avec une plume dans Xcode 8.1.

Le fait de définir "Barre du haut" et/ou "Barre du bas" sur autre chose que "Inféré" a entraîné le ralentissement de Xcode. Le passage à "Inféré" ramène les performances à la normale, avec l'inconvénient de supprimer les barres de l'aperçu.

Incorrect settings

Correct settings

46
Luke Van In

J'ai eu un problème similaire: Interface Builder était lent au point de ne presque plus répondre.

J'ai constaté que l'effacement de mon répertoire xcuserdata restaurait IB à la vitesse normale.

Vraisemblablement, un mauvais état s’est introduit qui a provoqué le ralentissement.

rm -rf Project.xcodeproj/xcuserdata/
rm -rf Project.xcworkspace/xcuserdata/
11
jnic

J'ai finalement trouvé un correctif, basé en grande partie sur les réponses à cette question. Cela a finalement abouti à un regard et à une comparaison avec le XML d'un storyboard fonctionnel, mais voici un résumé des étapes que j'ai entreprises.

  • Réinstallez Xcode 8.2.1 et redémarrez

  • Supprimer les fichiers de configuration, d'état et de données

    rm -rf ~/Library/Developer/*
    rm -rf ~/Library/Caches/com.Apple.dt.Xcode/*
    rm -rf ~/Library/Developer/Xcode/DerivedData/*
    rm -rf ApplicationName.xcodeproj/xcuserdata/
    rm -rf ApplicationName.xcworkspace/xcuserdata/
    rm -rf ~/Library/Saved\ Application\ State/com.Apple.dt.Xcode.savedState/
    
  • Résoudre les problèmes d'autolayout

  • Supprimez toutes les dépendances du storyboard XML sauf:

    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.Apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    
  • Vérifiez tous les storyboards et les fichiers xib, en vous assurant que tous les "Top Bar" et "Bottom Bar" sont réglés sur "Inféré"

Les deux derniers points semblaient être les plus importants.

5
Beer Me

Comment je résous le problème suspendu du storyboard:

  1. Sauvegardez le fichier de storyboard problématique.
  2. Supprimez-le dans le projet.
  3. Créez un nouveau story-board avec le même nom et le même emplacement que celui supprimé.
  4. Éditez les 2 storyboards avec l'éditeur de texte.
  5. Copiez les données XML après la balise </dependencies> de l'ancienne vers la nouvelle.
3
Gordon Wong

J'ai eu le même problème en utilisant Xcode 9.2, corrigé en supprimant la vue de pile qui englobait d'autres vues, je venais de supprimer la vue de pile et ses balises de sous-vue et conservais d'autres vues dans la scène.

1
user9222566

Travailler avec Xcode 8.1 beta. Je suppose que c'est un bug dans Xcode 8.

1
guido

(Xcode 9.2) Cela m'est arrivé juste après avoir ajouté une contrainte à un stackview. Peu importe ce que j'ai fait, ça n'a pas semblé régler le problème. Je savais qu'il devait s'agir d'un problème de mise en page automatique qu'il ne pouvait pas résoudre.

J'ai fini par ouvrir le fichier Main.storyboard dans l'éditeur de texte et supprimer la scène à l'origine du problème. Ça va commencer par

    <!—YourViewControllerName—>
    <scene sceneID=“XXX-XXX-XXX”>

et se terminer par </scene>. Mettez en surbrillance le bloc entier, supprimez-le, enregistrez-le et réessayez.

Bien mieux que de recommencer à zéro!

1
BillSkiCO

Je viens de passer à Xcode 8.3 et ce problème suspendu de storyboard est venu ... J'ai essayé tout ce qui a été mentionné ci-dessus, aucun d'entre eux ne fonctionne. 

Enfin, j'ai remarqué un avertissement de mise en page automatique indiquant que l'un des la taille de la barre de navigation de la scène du contrôleur de navigation n'est pas correct. Il insiste sur le fait que sa largeur doit être 320 et que l'appareil choisi est l'iPhone 7. Je suis revenu à Xcode 8.2.1 (le format 8.3 est trop lent pour changer quoi que ce soit!), Puis j'ai changé le périphérique d'affichage en iPhone SE ... tout est réglé!

1
Bonan

J'ai eu ce problème peu de temps après la mise à niveau vers Xcode 9, chaque fois que je changeais quelque chose dans le scénarimage (même en déplaçant une vue de 1 px), il restait suspendu pendant au moins 10 secondes avec le ballon de la mort en rotation.

Je ne voulais pas effacer tout mon dossier xcuserdata et perdre tous mes points d'arrêt, etc., mais simplement supprimer UserInterfaceState.xcuserstate et redémarrer Xcode a fonctionné pour moi.

1
deltacrux

Supprimez vos données dérivées de /Users/{nom d'utilisateur}/Library/Developer/Xcode/DerivedData

(Vous pouvez obtenir le chemin exact de).

1
healthycola

Jusqu'à ce que Apple répare IB, dans la première ligne XML (balise <document>) du fichier .xib incriminé:

useTraitCollections="NO"
0
JBJr

Voici ce que j'ai fait: couper le contrôleur de vue troublant, le coller dans le storyboard d'un nouveau projet temporaire, puis coller le contrôleur de vue. Travailler bien pour moi. 

Au fil du temps, à mesure que le storyboard grandit, xcode fait le bazar en gardant l'historique des éléments de viewcontroller et par conséquent le gel.

0
Code Tree

J'ai eu ce problème plusieurs fois. Habituellement, la solution de Bonan fonctionne pour moi. Dans les deux cas où il ne l'a pas fait, le problème semblait être lié à une barre d'outils que j'utilisais. Lorsque j'ai isolé la barre d'outils incriminée en effectuant un panoramique sur un emplacement du storyboard où le contrôleur de vue de la barre d'outils n'était plus visible sur mon écran, le storyboard s'est immédiatement accéléré. J'ai alors revu le contrôleur de mauvaise vue et supprimé la barre d’outils avant que le système ne ralentisse à nouveau. Je suis sûr qu'il existe un moyen de corriger la barre d'outils plutôt que de la supprimer, bien que je ne sache pas ce que c'est. La valeur de la métrique simulée étant définie sur «déduite», comme décrit ci-dessus par Luke Van In, le problème devait donc être différent. 

0
Wyatt