ios - tools - Xcode 6: Build cuelga y Interface Builder Cocoa Touch Tool comienza a asignar toda la memoria RAM
xcode requerimientos (13)
Tengo un problema para el que no he podido encontrar una solución solo buscando aquí o en Google.
Estoy construyendo un proyecto que es compartido por múltiples desarrolladores. Por alguna razón, soy el único con este problema. Revisé el código varias veces e incluso reinstalé Xcode.
Entonces, lo que sucede es que cuando construyo el proyecto, el proceso de construcción se cuelga para siempre. Se ejecuta un proceso llamado "Interface Builder Cocoa Touch Tool" y comienza a acumular RAM hasta que alcanza el límite de Mac (que es de 16 GB). En este punto, tan pronto como veo que mato el proceso y la compilación falla.
En la aplicación de la consola veo esto:
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
En Xcode veo que la compilación se bloquea en "Compilación de 1 de 1 archivos de la historia" o "Compilación de 1 de 1 catálogos de activos".
Incluso si detengo la compilación, el proceso de la "Herramienta Cocoa Touch de Interface Builder" continuará ejecutándose y acumulando RAM.
Veo dos advertencias relacionadas con el storyboard:
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
Y veo dos advertencias para los activos:
../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
Pero no creo que estas sean la causa.
Aquí están la información de Xcode y de Mac:
2.5 Ghz, Core i7 con 16 GB de RAM. Os X 10.9.5. Xcode 6.0.1.
Cualquier ayuda es más que bienvenida.
Gracias.
Aparentemente, hay un archivo .xib corrupto. Revertí el archivo que se estaba quedando atascado compilando. Estoy investigando cuál es la línea que lo está bloqueando.
EDITAR
Reproduje el problema en la consola: hay un error serio en curso aquí.
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)
Creo que el problema está relacionado con el nuevo mecanismo de fuente en el constructor de interfaz. Elimine todas las referencias a fuentes en su proyecto y apuesto a que el problema desaparece.
En Xcode, haga clic derecho en el archivo del guión gráfico y seleccione Abrir como -> Código fuente. En el editor de código fuente, cambie el valor de "useAutolayout" a "NO". Entonces, deberías poder abrir tu guión gráfico como Interface Builder. Me encontré con este problema molesto. Ahora, todos los archivos del guión gráfico creados en Xcode 5 ahora pueden abrirse en Xcode 6.
Esto sucede para mí en Xcode 8.2.1 si enlazo lo incorrecto en una vista de tabla basada en vista (p. Ej., Estoy usando Datos centrales). Estaba vinculando el valor de la vista de Table View Cell
vista de Table View Cell
del segundo nivel más profundo a mi controlador de matriz, cuando debería haber vinculado el campo de texto a la Table Cell View
, con una ruta de objectValue.<attributeName>
. El objeto de columna no debe vincularse a nada, y el Content
Table View
debe vincularse con el controlador de matriz mediante arrangedObjects
.
Esto, al menos, funciona, y permite a Xcode ( ibtool
) compilar el guión gráfico sin consumir toda la memoria disponible y bloquear el sistema.
Hice una "búsqueda binaria" para encontrar qué elemento corrompía mi archivo .xib.
Cada vez, tuve que matar a Xcode, eliminar datos derivados. Una vez que encontré la subvista que estaba causando el problema, la eliminé y reconstruí.
No estoy usando Storyboards, pero creo que el problema aquí puede estar en un nivel superior y no relacionado con guiones gráficos. Me enfrenté al mismo problema (xcode se bloquea al intentar crear la aplicación, el monitor de actividad muestra el constructor de la interfaz con un 99% de CPU).
Lo siguiente funcionó para mí: en el archivo .xcodeproj, cambiar el destino de implementación de iOS de 6.0 a 7.0 lo solucionó al instante.
Obtenía el mismo "Compilación de guiones gráficos" o "Compilación de catálogo de activos" en Xcode 7.3.1. Activity Monitor mostró la ejecución de múltiples procesos de la "Herramienta Cocoa Touch de Interface Builder".
Pude continuar por:
- Cerrar el guión gráfico ofensivo
- Cerrando el proyecto
- Reiniciar Xcode, pero no abrir el proyecto
- Abra solo el guión gráfico ofensivo
- Cerrando el guión gráfico y reiniciando Xcode
- Abra el proyecto
Solucioné el problema cambiando la configuración de Builds For en el Inspector de archivos para el guión gráfico de iOS6 y posterior a iOS8 y posterior. Parece funcionar en iOS 7.0 y posterior, pero volver a cambiar a cualquiera de las configuraciones de iOS6 hace que el problema vuelva a ocurrir.
Solucioné este problema simplemente resolviendo todas las advertencias relacionadas con el guión gráfico. Por ejemplo: 1. Eliminé la celda del prototipo no utilizada en TableView, porque causará una advertencia sobre algo como "No reuse Identifier". 2. Eliminé el controlador de vista no utilizado.
Tenía dos versiones de Xcode instaladas, 5 y 6. No estoy seguro de si esta era la causa, pero Apple indicó que esto sucede con las personas y que la acción adecuada es garantizar que la versión correcta esté "seleccionada"
xcode-select -p
No estoy seguro de que esto haya solucionado el problema o no, pero después de eliminar ambas versiones y luego instalar Xcode 6, parece que las cosas se han resuelto.
Tuve exactamente el mismo problema: abrir el guión gráfico en resultados xcode en beach ball con la tarea Interface Builder consumiendo toda la memoria. Lo recuperé trabajando editando el xml del archivo del guión gráfico y la configuración
useAutolayout="NO"
en el nodo del documento. Debido a que esto no es una solución al problema (que parece ser un error en xcode) porque atormenta todas las restricciones, pero al menos podría abrir y compilar el guión gráfico de nuevo.
Yo también he tenido problemas con los guiones gráficos que causan congelamientos con XCode 6.0.1 en OS X 10.9.5.
Ni siquiera puedo iniciar Xcode porque intenta volver a abrir el guión gráfico.
Esto es lo que debo hacer para recuperar (hasta que vuelva a suceder)
IMPORTANTE: asegúrese de hacer una copia de seguridad de su archivo de guión gráfico en caso de que lo elimine accidentalmente
- Completamente cerca de Xcode
- Desde un terminal (o buscador): MUEVE su archivo del guión gráfico a un lugar seguro
- Reinicie XCode y abra su espacio de trabajo o proyecto
- En Xcode: elimine el archivo del guión gráfico que falta del proyecto
- Desde una Terminal (o Buscador): COPIE su guión gráfico a su ubicación original
- Importe el guión gráfico a Xcode (Agregar archivo o arrastrar y colocar desde el Finder)
En este punto todo "normalmente" funciona para mí: abra el guión gráfico, compile, corra ... Puedo seguir trabajando con el guión gráfico hasta la próxima vez que vuelva a abrir el proyecto. Luego sucede nuevamente y tengo que repetir los mismos pasos.
Yo también tuve este problema y creo que encontré el motivo del ahorcamiento; Eliminé algunas restricciones del guión gráfico y ya no me congelo durante la fase de compilación.