web-dev-qa-db-fra.com

Xcode 6.3 se bloque / se bloque après l'ouverture du fichier XIB

Après la mise à niveau vers Xcode 6.3 (version finale), Xcode se bloque désormais à chaque fois que j'ouvre un fichier XIB/Storyboard contenant un IB_DESIGNABLE vue qui utilise une police personnalisée pour tous les projets et inclut une police personnalisée (pas nécessairement pour faire référence à cette police dans ce XIB/Storyboard). Le gel se produit après avoir ouvert le fichier .xib, puis tenté de basculer vers un autre fichier. Xcode se bloque et doit être forcé de quitter.

J'ai ouvert un rapport de bogue avec Apple. (Bogue 20483867).

En ce moment, j'ai deux solutions.

  1. Téléchargez et utilisez Xcode 6.2 d'Apple.
  2. Supprimez les balises IB_DESIGNABLE des fichiers d'en-tête de vue personnalisée.

Il s'agit probablement d'un bogue Apple, mais est-ce que quelqu'un a une meilleure solution ou solution?

82
picciano

Xcode 6.3.1 résout le problème avec les polices personnalisées et IB_DESIGNABLE vues dans un Storyboard. Mettez à jour via le Mac App Store, et vous devriez être bon.

25
Josh Brown

J'ai déjà suggéré une modification pour une description plus précise .

Cela ne se produit que lorsque votre projet contient une police personnalisée. Il se fige simplement en visitant n'importe quel Storyboard/XIB qui contient une vue personnalisée IBDesignable, sans même faire référence à cette police dans votre Storyboard/XIB.

Ma solution consiste à utilisez également une ancienne version de Xcode (Xcode 6.3 beta ou Xcode 6.2) et utilisez-la pour mettre à jour vos fichiers Interface Builder, et ne l'ouvrez jamais en 6.3. ouvrez ces Storyboard/XIB dans une nouvelle fenêtre dans Xcode avec option + shift + click le fichier dans l'arborescence du projet.

Chaque fois que vous rencontrez le gel, j'utilise cette commande pour effacer l'état enregistré juste pour ce projet.

rm -rf YourProject.xcodeproj/project.xcworkspace/xcuserdata

28
James Tang

Réponse d'Apple: Lien vers les forums de développeurs sur Apple

Merci à tous pour vos rapports. Nous suivons cela de notre côté et travaillons dur pour le résoudre. Malheureusement, nous n'avons pas une bonne solution de contournement, mais voici deux options pour vous aider à démarrer:

Si Xcode est suspendu au lancement parce qu'un storyboard/XIB utilisant une police personnalisée/IBDesignable était précédemment ouvert: supprimez le fichier "UserInterfaceState.xcuserstate" à l'intérieur du xcodeproj du projet que vous ouvrez, ce serait sur un chemin comme celui-ci: Mon application .xcodeproj/project.xcworkspace/xcuserdata/votrenomutilisateur.xcuserdatad/UserInterfaceState.xcuserstate

Si vous avez vraiment besoin de modifier le fichier storyboard/XIB contenant la police personnalisée avec Xcode 6.3:

  1. Faites une copie de votre storyboard/fichier XIB en tant que sauvegarde
  2. Ouvrez le storyboard/fichier XIB dans un éditeur de texte
  3. Supprimez les balises XML nommées "fontDescription" qui font référence à votre police personnalisée, par exemple:. La suppression de cette balise ramènera la police à la police système standard.
  4. Créez des débouchés pour les objets à l'aide de la police personnalisée et, au moment de l'exécution, définissez la police de ces objets sur votre police personnalisée, par exemple dans un remplacement de viewDidLoad ou awakeFromNib sur votre contrôleur de vue

NOTE IMPORTANTE: nous ne recommandons jamais de modifier manuellement les fichiers storyboard/XIB. Cependant, nous reconnaissons que ce problème empêche beaucoup d'entre vous de modifier vos documents et souhaitons fournir une solution de contournement avec la mise en garde que toute modification manuelle peut entraîner la corruption de votre document.

15
picciano

Même problème pour moi. La suppression d'IB_DESIGNABLE résout le problème. Revenir à 6.2 ne fonctionne pas pour moi car je teste des applications sur un appareil avec iOS 8.3 - Xcode 6.2 ne peut pas exécuter des applications sur des appareils avec iOS 8.3 :(

13
Denis Kildishev

Une autre solution consiste à modifier les extensions de fichier pour tous vos fichiers de polices et à charger les noms de fichiers modifiés à partir d'Info.plist. De cette façon, vous pouvez conserver IBDesignables et toujours utiliser vos polices personnalisées, mais vous ne pourrez pas les voir dans le sélecteur de polices dans Interface Builder.

Toutes les polices personnalisées qui ont été définies à partir d'Interface Builder continueront de fonctionner, mais pour les modifier ou pour définir d'autres polices personnalisées, vous devrez le faire à partir du code ou pour modifier les fichiers Storyboard ou Nib à partir de l'éditeur de texte afin pour définir le nom de la police.

3
KoCMoHaBTa

Je n'ai pas de réponse, mais j'ai découvert que le simple fait de forcer la fermeture et le redémarrage relancerait Xcode dans la même situation. Pour pouvoir simplement redémarrer Xcode, supprimez le dossier ~/Library/Saved Application State/com.Apple.dt.Xcode.savedState.

2
Bart van Kuik

Ce bug a été corrigé dans la version bêta de Xcode 6.4 qui est sortie aujourd'hui. Accédez au centre de développement et connectez-vous pour le télécharger.

1

Xcode 8.1 - si vous avez une vue avec Navigation (dans mon cas, c'était la barre de navigation opaque de la barre supérieure), essayez simplement de définir la propriété "Barre supérieure" sur Aucune.

1
O. Kurnenkov

@O. La réponse de Kurnenkov a fonctionné pour moi. Cela n'avait rien à voir avec IB_Designable ni les polices personnalisées, les Cocoapods, etc.

Pour une raison quelconque, avoir une "barre de navigation opaque" fait que le fichier nib (il ne semble pas affecter storyboards) change constamment la position de y; cela peut être vu dans le Size Inspector où la position y scintillera entre 0 et 64. Cela m'arrive avec Xcode 8.2 (8C38).

enter image description here

Je suppose que cela fait que Xcode met constamment à jour la mise en page, drainant ainsi les ressources et provoquant son blocage/gel.

enter image description here

La solution consiste à utiliser l'une des options "Translucide", présumée ou aucune.

J'espère que cela t'aides!

0
LuisCien

Pour contourner ce problème, je viens de commenter tout le balisage @IBDesignable dans ma poignée de composants personnalisés qui utilisent cela. Quand je l'ai fait, oui, je perds la capacité de modifier les paramètres d'Interface Builder, mais cela m'a permis au moins d'ouvrir les fichiers .xib sans planter XCode.

Je vais simplement décommenter ces lignes @IBDesignable lorsque Apple apparaît avec un correctif.

0
user871177