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

Après la mise à niveau vers Xcode 6.3 (version IB_DESIGNABLE ), Xcode se fige à chaque fois que j’ouvre un fichier XIB / Storyboard incluant une vue IB_DESIGNABLE qui utilise une police personnalisée pour tous les projets et comprend une police personnalisée (pas nécessairement avoir une référence à cette police dans ce XIB / Storyboard). Le gel se produit après l’ouverture du fichier .xib, puis tente de basculer vers un autre fichier. Xcode se bloque et doit être forcé à quitter.

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

En ce moment, j’ai deux choses à contourner.

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

C’est probablement un bug Apple, mais est-ce que quelqu’un a un meilleur travail ou une meilleure solution?

Xcode 6.3.1 corrige le problème des fonts personnalisées et des vues IB_DESIGNABLE dans un storyboard. Mise à jour via le Mac App Store, et vous devriez être bon.

J’ai déjà suggéré un assembly pour une description plus précise .

Cela se produit uniquement lorsque votre projet contient une police personnalisée. Il se bloquera simplement en visitant un Storyboard / XIB contenant une vue personnalisée IBDesignable, sans référence à cette police dans votre Storyboard / XIB.

Ma solution de contournement consiste à utiliser une ancienne version de Xcode (Xcode 6.3 beta ou Xcode 6.2) et à l’utiliser pour mettre à jour vos fichiers Interface Builder, et ne jamais l’ouvrir dans 6.3. ouvrez ces Storyboard / XIB dans une nouvelle fenêtre de Xcode avec l’ 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é uniquement pour ce projet.

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

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 solution de rechange géniale, mais voici deux options pour vous permettre de démarrer:

Si Xcode est en attente de lancement car un storyboard / XIB utilisant une police personnalisée / IBDesignable était précédemment ouvert: supprimez le fichier “UserInterfaceState.xcuserstate” dans le xcodeproj du projet que vous ouvrez, il se trouverait comme ceci: My App .xcodeproj / project.xcworkspace / xcuserdata / votrenomdutilisateur.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 fichier storyboard / XIB en tant que sauvegarde
  2. Ouvrez le fichier storyboard / 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 standard du système.
  4. Créez des sorties vers les objects à l’aide de la police personnalisée et, au moment de l’exécution, définissez la police de ces objects sur votre police personnalisée, par exemple en remplaçant viewDidLoad ou awakeFromNib par votre contrôleur de vue.

REMARQUE IMPORTANTE: nous ne recommandons jamais de modifier manuellement les fichiers storyboard / XIB. Cependant, nous reconnaissons que ce problème empêche un grand nombre d’entre vous d’éditer vos documents et souhaitait apporter une solution de contournement en soulignant que toute modification manuelle pourrait entraîner la corruption de votre document.

Même problème pour moi. La suppression d’IB_DESIGNABLE résout le problème. Revenir à la version 6.2 ne me convient pas car je teste des applications sur un appareil doté d’iOS 8.3 – Xcode 6.2 ne peut pas exécuter d’applications sur des appareils dotés d’iOS 8.3 🙁

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

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

Je n’ai pas de réponse, mais j’ai découvert que le simple fait de quitter et de redémarrer forcément relancerait Xcode dans la même situation. Pour simplement être en mesure de redémarrer Xcode, supprimez le dossier ~/Library/Saved Application State/com.apple.dt.Xcode.savedState .

Ce bogue a été corrigé dans la version bêta 6.4 Xcode qui est sortie aujourd’hui. Allez dans le centre de développement et connectez-vous pour le télécharger.

Xcode 8.1 – si vous avez une vue avec la navigation (dans mon cas c’était la barre de navigation opaque de la barre supérieure), essayez simplement de définir la propriété “top bar” sur None.

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

Je vais tout simplement dé-commenter ces lignes @IBDesignable quand Apple arrive avec un correctif.

@O. La réponse de Kurnenkov a fonctionné pour moi. Il n’a rien à voir avec IB_Designable, ni les fonts personnalisées, les Cocoapods, etc.

Pour une raison quelconque, avoir une “barre de navigation opaque” provoque le fichier nib (cela ne semble pas affecter les storyboard ) pour changer constamment la position y ; Cela peut être vu dans l’ Size Inspector où la position y va osciller entre 0 et 64. Cela m’arrive avec Xcode 8.2 (8C38).

entrer la description de l'image ici

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

entrer la description de l'image ici

La solution consiste à utiliser l’une des options “Translucent”, Inferred ou None.

J’espère que cela t’aides!