web-dev-qa-db-fra.com

Xcode 6: Build bloque et Interface Builder Cocoa Touch Tool commence à allouer tout RAM

J'ai un problème auquel je n'ai pas pu trouver de solution simplement en effectuant une recherche ici ou sur Google.

Je crée un projet qui est partagé par plusieurs développeurs. Pour une raison quelconque, je suis le seul à avoir ce problème. J'ai vérifié le code plusieurs fois et j'ai même réinstallé Xcode.

Donc, ce qui se passe, c'est que lorsque je crée le projet, le processus de construction se bloque pour toujours. Un processus appelé "Interface Builder Cocoa Touch Tool" s'exécute et commence à accumuler RAM jusqu'à ce qu'il atteigne la limite du Mac (qui est de 16 Go). À ce stade, dès que je vois que je tue le processus et la construction échoue.

Sur l'application console, je vois ceci:

2014-10-02 4:45:16.013 PM Interface Builder Cocoa Touch Tool[875]: BUG in libdispatch client: kevent[EVFILT_VNODE] add: "Bad file descriptor" - 0x9
2014-10-02 4:45:17.956 PM Interface Builder Cocoa Touch Tool[875]: assertion failed: 13F34: libxpc.dylib + 29453 [75E30F22-514B-3A20-B82C-EDA43AF5C35C]: 0x8d

Sur Xcode, je vois la version bloquée sur "Compilation des fichiers de storyboard 1 sur 1" ou "Compilation des catalogues d'actifs 1 sur 1".

Même si j'arrête la génération, le processus "Interface Builder Cocoa Touch Tool" continuera à fonctionner et à accumuler de la RAM.

Je vois deux avertissements liés au story-board:

Base.lproj/MainStoryboard.storyboard Frame for "Scroll View" will be different at run time.
Base.lproj/MainStoryboard.storyboard: warning: Unsupported Configuration: Prototype table cells must have reuse identifiers

Et je vois deux avertissements pour les actifs:

../Images-2.xcassets: A 57x57 app icon is required for iPhone apps targeting releases of iOS prior to 7.0
../Images-2.xcassets: A 57x57@2x app icon is required for iPhone apps targeting releases of iOS prior to 7.0

Mais je ne pense pas que ce soit la cause.

Voici les informations de Xcode et Mac:

2,5 GHz, Core i7 avec 16 Go de Ram. Os X 10.9.5. Xcode 6.0.1.

Toute aide est plus que bienvenue.

Merci.

35
HotFudgeSunday

J'ai eu exactement le même problème: ouvrir le storyboard dans xcode entraîne un ballon de plage avec la tâche Interface Builder consommant toute la mémoire. Je l'ai fait fonctionner en modifiant le xml du fichier de storyboard et en le définissant

useAutolayout="NO"

dans le nœud du document. Ce n'est pas une solution au problème (qui semble être un bogue dans xcode) car il visse toutes les contraintes, mais au moins j'ai pu ouvrir et compiler à nouveau le storyboard.

8
knukko

Apparemment, il y a un fichier .xib corrompu. J'ai rétabli le fichier qui se bloquait lors de la compilation. Je recherche quelle est la ligne qui fait planter.

ÉDITER

J'ai reproduit le problème dans la console: il y a un bug sérieux en cours ici.

Felipes-MacBook-Pro:FitMob-ios fbaytelm$     /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ibtool --target-device iphone --errors --warnings --notices --module fitmobAppStore --minimum-deployment-target 7.0 --output-partial-info-plist /Users/fbaytelm/Library/Developer/Xcode/DerivedData/fitmob-fpoxwngwxzwfqrebczuslduvfozr/Build/Intermediates/fitmob.build/Debug-iphonesimulator/fitmobAppStore.build/FMSplashViewController-PartialInfo.plist --auto-activate-custom-fonts --output-format human-readable-text --compile /Users/fbaytelm/Library/Developer/Xcode/DerivedData/fitmob-fpoxwngwxzwfqrebczuslduvfozr/Build/Products/Debug-iphonesimulator/fitmobAppStore.app/FMSplashViewController.nib /Users/fbaytelm/Documents/workspace/FitMob-ios/FitMob/Classes/Views/Common/FMSplashViewController.xib
2014-10-10 01:38:48.386 ibtoold[23113:213948] [MT] DVTAssertions: ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilder/IDEInterfaceBuilder-6249/InterfaceBuilderKit/Utilities/IBAbstractMessageChannelInterfaceBuilderToolProxy.m:40
Details:  Failed to determine the value for availableFonts of UIFont.

Encountered an error communicating with Interface Builder Cocoa Touch Tool. If you choose to file a crash report or Radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their content in your crash report.

Exception name: IBRemoteToolFailureException
Exception reason: Interface Builder Cocoa Touch Tool crashed

Last command:
valueForKeyPath:ofClassWithName:resultMarshaller:resultMarshallerContext:

Backtrace of last command:
  0  0x000000010d5dc3e1 (in IDEInterfaceBuilderCocoaTouchIntegration)
  1  0x000000010d5a4cd1 IBAskClassInTargetRuntimeForValueForKeyPathUsingResultMarshallerWithContext (in IDEInterfaceBuilderCocoaTouchIntegration)
  2  0x000000010d5a4b38 IBAskClassInTargetRuntimeForValueForKeyPathUsingResultMarshaller (in IDEInterfaceBuilderCocoaTouchIntegration)
  3  0x000000010d5d7bae (in IDEInterfaceBuilderCocoaTouchIntegration)
  4  0x000000010d5d7a35 (in IDEInterfaceBuilderCocoaTouchIntegration)
  5  0x000000010d5d8873 (in IDEInterfaceBuilderCocoaTouchIntegration)
  6  0x000000010d64cb26 (in IDEInterfaceBuilderCocoaTouchIntegration)
  7  0x000000010d67b46b IBUIValidateFontDescription (in IDEInterfaceBuilderCocoaTouchIntegration)
  8  0x000000010d6e9fe7 (in IDEInterfaceBuilderCocoaTouchIntegration)
  9  0x000000010762177f -[IBDocumentIssueGenerator updateIssuesForMembers:] (in IDEInterfaceBuilderKit)
 10  0x0000000107622790 -[IBDocumentIssueGenerator validateIssues:] (in IDEInterfaceBuilderKit)
 11  0x000000010667f37e -[DVTDelayedInvocation runBlock:] (in DVTFoundation)
 12  0x000000010667f903 -[DVTDelayedInvocation invokeIfNeeded] (in DVTFoundation)
 13  0x000000010762289b -[IBDocumentIssueGenerator warnings] (in IDEInterfaceBuilderKit)
 14  0x00000001065aebbb (in ibtoold)
 15  0x00000001065a130f (in ibtoold)
 16  0x00000001065a4b21 (in ibtoold)
 17  0x00000001065aa3f7 (in ibtoold)
 18  0x00000001065aa947 (in ibtoold)
 19  0x00000001065aa817 (in ibtoold)
 20  0x0000000106599d4f (in ibtoold)
 21  0x00000001065a9fe1 (in ibtoold)
 22  0x00000001065a9238 (in ibtoold)
 23  0x00007fff90ff15c9 start (in libdyld.dylib)

Exception backtrace:
(null)
Exception info:{
    IBUnderlyingError = "Error Domain=IBMessageChannelErrorDomain Code=4 \"Failed to communicate with Interface Builder\" UserInfo=0x7fe7fbf43020 {NSLocalizedDescription=Failed to communicate with Interface Builder, NSLocalizedFailureReason=Interface Builder Cocoa Touch Tool crashed}";
}

Function: void IBAssertMarshallingFailure(NSString *__strong, NSString *__strong, NSString *__strong)
Thread:   <NSThread: 0x7fe7f941adf0>{number = 1, name = main}
Hints: None
Backtrace:
  0  0x00000001067982e4 -[DVTAssertionHandler handleFailureInFunction:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in DVTFoundation)
  1  0x0000000106797a7b _DVTAssertionHandler (in DVTFoundation)
  2  0x0000000106797cde _DVTAssertionFailureHandler (in DVTFoundation)
  3  0x0000000107676973 IBAssertMarshallingFailure (in IDEInterfaceBuilderKit)
  4  0x000000010d5a4e1c IBAskClassInTargetRuntimeForValueForKeyPathUsingResultMarshallerWithContext (in IDEInterfaceBuilderCocoaTouchIntegration)
  5  0x000000010d5a4b38 IBAskClassInTargetRuntimeForValueForKeyPathUsingResultMarshaller (in IDEInterfaceBuilderCocoaTouchIntegration)
  6  0x000000010d5d7bae (in IDEInterfaceBuilderCocoaTouchIntegration)
  7  0x000000010d5d7a35 (in IDEInterfaceBuilderCocoaTouchIntegration)
  8  0x000000010d5d8873 (in IDEInterfaceBuilderCocoaTouchIntegration)
  9  0x000000010d64cb26 (in IDEInterfaceBuilderCocoaTouchIntegration)
 10  0x000000010d67b46b IBUIValidateFontDescription (in IDEInterfaceBuilderCocoaTouchIntegration)
 11  0x000000010d6e9fe7 (in IDEInterfaceBuilderCocoaTouchIntegration)
 12  0x000000010762177f -[IBDocumentIssueGenerator updateIssuesForMembers:] (in IDEInterfaceBuilderKit)
 13  0x0000000107622790 -[IBDocumentIssueGenerator validateIssues:] (in IDEInterfaceBuilderKit)
 14  0x000000010667f37e -[DVTDelayedInvocation runBlock:] (in DVTFoundation)
 15  0x000000010667f903 -[DVTDelayedInvocation invokeIfNeeded] (in DVTFoundation)
 16  0x000000010762289b -[IBDocumentIssueGenerator warnings] (in IDEInterfaceBuilderKit)
 17  0x00000001065aebbb (in ibtoold)
 18  0x00000001065a130f (in ibtoold)
 19  0x00000001065a4b21 (in ibtoold)
 20  0x00000001065aa3f7 (in ibtoold)
 21  0x00000001065aa947 (in ibtoold)
 22  0x00000001065aa817 (in ibtoold)
 23  0x0000000106599d4f (in ibtoold)
 24  0x00000001065a9fe1 (in ibtoold)
 25  0x00000001065a9238 (in ibtoold)
 26  0x00007fff90ff15c9 start (in libdyld.dylib)
6
Felipe Baytelman

Dans Xcode, cliquez avec le bouton droit sur le fichier de storyboard et sélectionnez Ouvrir en tant que -> Code source. Dans l'éditeur de code source, remplacez la valeur de "useAutolayout" par "NO". Ensuite, vous devriez pouvoir ouvrir votre storyboard en tant que générateur d'interface. J'ai rencontré ce problème ennuyeux. Maintenant, tous mes fichiers de storyboard créés dans Xcode 5 peuvent maintenant être ouverts dans Xcode 6.

3
Bin Zhou

J'avais installé deux versions de Xcode, 5 et 6. Je ne sais pas si c'était la cause, mais Apple a indiqué que cela se produit avec les gens et que l'action appropriée est de s'assurer que la version correcte est ' choisi'

xcode-select -p

Pas sûr que cela aurait résolu le problème ou non, mais après avoir supprimé les deux versions puis installé Xcode 6, les choses semblent avoir été résolues.

3
MobileVet

J'ai résolu le problème en modifiant le paramètre Builds For dans l'inspecteur de fichiers pour le storyboard d'iOS6 et versions ultérieures à iOS8 et versions ultérieures. Il semble fonctionner sur iOS 7.0 et versions ultérieures, mais en le modifiant à nouveau dans Les paramètres iOS6 font que le problème se reproduise.

2
user2002649

Moi aussi, j'ai eu des problèmes avec les storyboards provoquant des gels avec XCode 6.0.1 sur OS X 10.9.5.
Je ne peux même pas démarrer Xcode car il essaie de rouvrir le storyboard.

Voici ce que je fais pour récupérer (jusqu'à ce que cela se reproduise)

IMPORTANT: assurez-vous de sauvegarder votre fichier de storyboard au cas où vous le supprimeriez accidentellement

  1. Fermer complètement Xcode
  2. Depuis un terminal (ou Finder): DÉPLACEZ votre fichier de storyboard vers un emplacement sûr
  3. Redémarrez XCode et ouvrez votre espace de travail ou projet
  4. Dans Xcode: supprimez le fichier de storyboard manquant du projet
  5. Depuis un terminal (ou Finder): COPIEZ votre storyboard à son emplacement d'origine
  6. Importez le storyboard dans Xcode (Ajouter un fichier ou glisser-déposer depuis le Finder)

À ce stade, tout fonctionne "habituellement" pour moi: ouvrir le storyboard, construire, exécuter ... Je peux continuer à travailler avec le storyboard jusqu'à la prochaine fois que je rouvre le projet. Ensuite, cela se reproduit et je dois répéter les mêmes étapes.

1
AndyDeveloper

J'ai fait une "recherche binaire" pour trouver quel élément corrompait mon fichier .xib.

Chaque fois, j'ai dû tuer Xcode, supprimer les données dérivées. Une fois que j'ai trouvé la vue secondaire à l'origine du problème, je l'ai supprimée et reconstruite.

0
Felipe Baytelman

Je n'utilise pas de storyboards, mais je pense que le problème ici peut être à un niveau supérieur et non lié aux storyboards. J'ai rencontré le même problème (xcode se bloque en essayant de créer l'application, le moniteur d'activité montre le générateur d'interface utilisant 99% de CPU).

Ce qui suit a fonctionné pour moi - Dans le fichier .xcodeproj, le changement de la cible de déploiement iOS de 6.0 à 7.0 l'a corrigé instantanément.

0
4mo1

J'obtenais le même "Compilation de storyboards" ou "Compilation de catalogue d'actifs" sous Xcode 7.3.1. Le Moniteur d'activité a montré plusieurs processus "Interface Builder Cocoa Touch Tool" en cours d'exécution.

J'ai pu continuer en:

  1. Fermer le storyboard incriminé
  2. Clôture du projet
  3. Redémarrez Xcode, mais n'ouvrez pas le projet
  4. Ouvrez uniquement le storyboard incriminé
  5. Fermer le storyboard et redémarrer Xcode
  6. Ouvrez le projet
0
Jamie McDaniel

Moi aussi, j'ai eu ce problème et je pense avoir trouvé la raison de la pendaison; J'ai supprimé certaines contraintes du storyboard et je n'obtiens plus ce gel pendant la phase de construction.

0
jwrnr

Je crois que le problème est lié au nouveau mécanisme de police dans le constructeur d'interface. Supprimez toutes les références aux polices de votre projet et je parie que le problème disparaît.

0
bobeast

Cela se produit pour moi dans Xcode 8.2.1 si je lie la mauvaise chose dans une vue de table basée sur une vue (p.s., j'utilise Core Data). Je liais le deuxième niveau le plus profond Table View Cell afficher la valeur de mon contrôleur de baie, alors que j'aurais dû lier le champ de texte à Table Cell View, avec un chemin de objectValue.<attributeName>. L'objet colonne ne doit être lié à rien et le Table ViewContent doit être lié au contrôleur de baie via arrangedObjects.

Cela, au moins, fonctionne et permet à Xcode (ibtool) de compiler le storyboard sans consommer toute la mémoire disponible et planter le système.

0
Rick

J'ai résolu ce problème en résolvant tous les avertissements liés au storyboard. Par exemple: 1. J'ai supprimé la cellule prototype inutilisée dans TableView, car elle provoquera un avertissement concernant quelque chose comme "No reuse Identifier". 2. J'ai supprimé le contrôleur de vue inutilisé.

0
Simon Tseng