Xcode 6.3 se congela / cuelga después de abrir el archivo XIB

82

Después de actualizar a Xcode 6.3 (versión de lanzamiento), Xcode ahora se congela cada vez que abro un archivo XIB / Storyboard que incluye una IB_DESIGNABLEvistaque usa una fuente personalizadapara cualquier proyecto e incluye una fuente personalizada (no necesariamente para hacer referencia a esa fuente en ese XIB / Storyboard). La congelación ocurre después de abrir el archivo .xib y luego intentar cambiar a cualquier otro archivo. Xcode se cuelga y debe forzarse su cierre.

Abrí un informe de error con Apple. (Error 20483867).

En este momento, tengo dos soluciones.

  1. Descarga y usa Xcode 6.2 de Apple.
  2. Elimine las etiquetas IB_DESIGNABLE de los archivos de encabezado de vista personalizada.

Es probable que se trate de un error de Apple, pero ¿alguien tiene una solución o solución alternativa mejor?

picciano
fuente
7
Lo mismo aquí, Xcode se congela por completo cuando intento cambiar de Interface Builder a cualquier otro archivo. La eliminación de TODOS los IB_DESIGNABLE atributos soluciona este problema. Volverá a 6.2 fow ahora ...
maxkonovalov
1
Igual que aquí. Eliminar la carpeta ~ / Library / Saved Application State / com.apple.dt.Xcode.savedState me ayuda, pero cuando intento abrir el guión gráfico nuevamente, tengo el mismo problema.
tikhop
También puede intentar desmarcar "Actualizar vistas automáticamente" para ver si esto evita el bloqueo. Si es así, puede ver si puede "Actualizar todas las vistas" sin bloquear.
nhgrif
@nhgrif ¿Dónde está ese escenario?
picciano
2
Apple ha solicitado la salida de sysdiagnose. Seguiré proporcionando actualizaciones a medida que avance.
picciano

Respuestas:

26

Xcode 6.3.1 soluciona el problema con las fuentes y IB_DESIGNABLEvistas personalizadas en un Storyboard. Actualice a través de la Mac App Store, y debería estar bien.

Josh Brown
fuente
28

Ya sugerí una edición para una descripción más precisa .

Solo sucede cuando su proyecto contiene una fuente personalizada. Se congelará con solo visitar cualquier Storyboard / XIB que contenga una vista personalizada IBDesignable, sin siquiera hacer referencia a esa fuente en su Storyboard / XIB.

Mi solución es usar una versión anterior de Xcode también instalada (Xcode 6.3 beta o Xcode 6.2) y usarla para actualizar los archivos de Interface Builder, y nunca abrirla en 6.3. abra esos Storyboard / XIB en una nueva ventana en Xcode con option+ shift+ clickel archivo en el árbol del proyecto.

Siempre que encuentre la congelación, uso este comando para borrar el estado guardado solo para ese proyecto.

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

James Tang
fuente
3
el comando de limpieza xcuserdataes útil. funciona para mi.
Yevhen Dubinin
5
Si está utilizando CocoaPods, es posible que también deba eliminar el xcuserdata del archivo del espacio de trabajo principal en lugar del de .xcodeproj rm -rf YourProject.xcworkspace / xcuserdata
Nur Iman Izam
Hola, me he encontrado con este problema MUCHO recientemente, así que escribí un guión para ayudar a solucionar el problema. Funciona muy bien para un proyecto que usa CocoaPods, pero no lo he probado fuera de mi propio entorno. Incluye la solución publicada en esta respuesta, pero debe manejar tanto proyectos individuales como espacios de trabajo gist.github.com/Ziewvater/3190e20b1ace2ab3c3b6 . Avísame si puedo
mejorarlo
15

Respuesta de Apple: Enlace a foros de desarrolladores en Apple

Gracias a todos por sus informes. Estamos rastreando esto por nuestra parte y trabajando arduamente para resolverlo. Desafortunadamente, no tenemos una gran solución alternativa, pero aquí hay dos opciones para comenzar:

Si Xcode se cuelga al iniciarse porque un guión gráfico / XIB que usa una fuente personalizada / IBDesignable estaba previamente abierto: elimine el archivo "UserInterfaceState.xcuserstate" dentro del xcodeproj del proyecto que está abriendo, estaría en una ruta como esta: Mi aplicación .xcodeproj / project.xcworkspace / xcuserdata / yourusername.xcuserdatad / UserInterfaceState.xcuserstate

Si realmente necesita editar el archivo del guión gráfico / XIB que contiene la fuente personalizada con Xcode 6.3:

  1. Haga una copia de su guión gráfico / archivo XIB como copia de seguridad
  2. Abra el guión gráfico / archivo XIB en un editor de texto
  3. Elimine las etiquetas XML llamadas "fontDescription" que hacen referencia a su fuente personalizada, por ejemplo:. Al eliminar esta etiqueta, la fuente volverá a la fuente estándar del sistema.
  4. Haga salidas a los objetos usando la fuente personalizada y en tiempo de ejecución configure la fuente de esos objetos a su fuente personalizada, por ejemplo en una anulación de viewDidLoad o awakeFromNib en su controlador de vista

NOTA IMPORTANTE: nunca recomendamos la edición manual de archivos de storyboard / XIB. Sin embargo, reconocemos que este problema impide que muchos de ustedes editen sus documentos y queríamos proporcionar una solución con la advertencia de que cualquier edición manual puede dañar su documento.

picciano
fuente
9
Todo esto es muy gracioso. "Si realmente necesita editar el guión gráfico / archivo XIB"
user1021430
13

El mismo problema para mí. Eliminar IB_DESIGNABLE soluciona el problema. Volver a 6.2 no me funciona porque estoy probando aplicaciones en un dispositivo con iOS 8.3 - Xcode 6.2 no puede ejecutar aplicaciones en dispositivos con iOS 8.3 :(

Denis Kildishev
fuente
El mismo problema aquí también. Necesito 8.3 y también estoy usando algunas funciones más nuevas de Swift.
Christian A. Strømmen
Una alternativa si aún necesita hacer el trabajo y resulta que tiene uno, es volver a una de las versiones beta de Xcode 6.3. Puedo confirmar que la compilación 6D532l (beta 3, creo) no se bloquea.
Samscam
3

Otra solución es cambiar las extensiones de archivo a todos sus archivos de fuentes y cargar los nombres de archivo modificados desde Info.plist. De esta manera, puede conservar IBDesignables y seguir usando sus fuentes personalizadas, pero no podrá verlas en el selector de fuentes en Interface Builder.

Todas las fuentes personalizadas que se configuraron anteriormente desde Interface Builder continuarán funcionando, pero para cambiarlas o configurar otras fuentes personalizadas, tendrá que hacerlo desde el código o modificar los archivos Storyboard o Nib desde el editor de texto en orden para establecer el nombre de la fuente.

KoCMoHaBTa
fuente
Esto funcionó para mí. Descubrí que incluso después de eliminar el estado guardado / xcuserdata, simplemente se rompería nuevamente la próxima vez que se abriera el guión gráfico. Dejar caer las extensiones para las fuentes y actualizar Info.plist parece funcionar mejor
John Martin
Esto también funcionó para mí, después de seguir los pasos que @picciano publicó
Albert Bori
2

No tengo una respuesta, pero descubrí que simplemente forzar el cierre y reiniciar reiniciará Xcode exactamente en la misma situación. Para poder reiniciar Xcode, elimine la carpeta ~/Library/Saved Application State/com.apple.dt.Xcode.savedState.

Bart van Kuik
fuente
1
Otra opción aquí es ubicar su archivo de proyecto en Finder (.xcodeproj o .xcworkspace) -> mostrar el contenido del paquete -> y eliminar la carpeta "xcuserdata" allí. Restaurará el estado de la interfaz de usuario de Xcode.
maxkonovalov
Destruir los datos del usuario me ayudó con mi problema de Xcode 6.3
Sascha se celebró el
1

Este error se ha corregido en la versión beta de Xcode 6.4 que salió hoy. Vaya al centro de desarrollo e inicie sesión para descargarlo.

Christian A. Strømmen
fuente
Preferiría esperar a la nueva versión de Xcode 6.3 (por ejemplo, 6.3.1), porque no podemos permitirnos desarrollar en versiones beta, porque pueden traer más problemas en comparación con los que están arreglados.
KoCMoHaBTa
3
He descargado 6.4 pero todavía falla.
Jibla
1

Xcode 8.1: si tiene una vista con navegación (en mi caso, era la barra superior de la barra de navegación opaca), intente establecer la propiedad "barra superior" en Ninguno.

O. Kurnenkov
fuente
Creo que puede haber agregado esto a la pregunta incorrecta.
picciano
@picciano no, esto es realmente correcto. Fue lo único que funcionó para mí. Por favor, vea mi respuesta para más detalles
LuisCien
0

Como solución temporal, acabo de comentar todo el marcado @IBDesignable en mi puñado de componentes personalizados que usan esto. Cuando hice eso, sí, perdí la capacidad de modificar la configuración en Interface Builder, pero me permitió al menos abrir los archivos .xib sin que XCode fallara.

Simplemente eliminaré los comentarios de esas líneas @IBDesignable cuando Apple aparezca con una solución.

usuario871177
fuente
0

@O. La respuesta de Kurnenkov funcionó para mí. No tenía nada que ver con IB_Designable ni con fuentes personalizadas, Cocoapods, etc.

Por alguna razón, tener una "Barra de navegación opaca" hace que el nibarchivo (no parece afectar los storyboards) cambie constantemente de yposición; esto se puede ver en Size Inspectordonde la yposición parpadeará entre 0 y 64. Esto me está sucediendo con Xcode 8.2 (8C38).

ingrese la descripción de la imagen aquí

Supongo que esto hace que Xcode actualice constantemente el diseño, lo que agota los recursos y hace que se cuelgue / congele.

ingrese la descripción de la imagen aquí

La solución es utilizar cualquiera de las opciones "Translúcido", Inferido o Ninguno.

¡Espero que esto ayude!

LuisCien
fuente