Apple lanza Xcode 5.1 solucionando varios problemas e implementando multitud de nuevas funciones

  Xcode es el programa que contiene todas las herramientas que un desarrollador de aplicaciones necesita para desarrollar y lanzar una aplicación en App Store, y durante esta tarde Apple lo actualizó. Versión 5.1a Xcode viene junto con iOS 7.1, permitiendo a los desarrolladores hacer que sus aplicaciones sean compatibles con la nueva versión del sistema operativo. Xcode 5.1 se lanza con la idea de resolver multitud de problemas de la versión anterior, y a través del registro de cambios a continuación podrás saber exactamente qué funcionará mejor o qué encontrarás nuevo.

Nuevas características

Depuración

  • Quick Look se puede implementar para clases definidas por el desarrollador. Cuando se ve una instancia de una clase personalizada con Quick Look en la vista de variables del depurador o un tipo de datos, el depurador la presenta usando un método llamado -debugQuickLookObject definido en la implementación de la clase. Para obtener detalles sobre cómo utilizar esta capacidad, consulte Búsqueda rápida de tipos personalizados en el depurador de Xcode. (12723736)
  • Las acciones de punto de interrupción de registro ahora imprimen el valor lógico de las expresiones. Por ejemplo, una acción de punto de interrupción de registro como "myString = @myString@" ahora imprime el valor de myString, en lugar del valor del puntero. (13211695) 

Edición de interfaces de usuario

  • Los documentos de Interface Builder pueden contener información específica sobre las nuevas funciones que utilizan y las versiones del sistema operativo que requieren, lo que permite que las versiones anteriores de Xcode muestren mejores mensajes de advertencia al intentar abrir dichos documentos. (7659982)
  • La creación de interfaces en Interface Builder utilizando el diseño automático ofrece el conjunto completo de posibles tipos de restricciones: relaciones de aspecto, tamaños y posiciones proporcionales, alineaciones de atributos cruzados y un nuevo inspector de restricciones con funciones para editar casi todas las propiedades de una restricción.
  • El inspector de atributos de restricciones de Interface Builder muestra los elementos y atributos de una restricción y permite editar los atributos. Esta característica permite la capacidad de crear restricciones de atributos cruzados, como view1.centerY = view2.bottom. (13739009)
  • Puede utilizar Interface Builder para editar la relación de cualquier tipo de restricción, incluidas las restricciones de alineación (por ejemplo, view1.leading <= view2.leading) y restricciones de igual tamaño (por ejemplo, view1.width >= view2.width) (14721954)
  • Puede crear restricciones de relación de aspecto y tamaño proporcional y editar el multiplicador de restricciones en Interface Builder. El multiplicador puede ser un número decimal (por ejemplo, 0.5), una fracción (por ejemplo, 1/2), o una relación de aspecto (por ejemplo, 1:2) (11935843)
  • Las restricciones adjuntas a vistas ambiguas en Interface Builder se dibujan en naranja solo en el eje con ambigüedad. Esto hace que sea más rápido identificar un problema potencial en el lienzo. (15114120)
  • El lienzo de Interface Builder ahora muestra desplazadores superpuestos cuando corresponde, según la configuración "Mostrar barra de desplazamiento" en el panel General en Preferencias del Sistema. (10069033)
  • El inspector de Interface Builder ahora admite:
    • NSTableView – floatsGroupRows propiedad (9617000)
    • UISegmentedControl – apportionsSegmentWidthsByContent propiedad (9950528)
    • UITableView – sectionIndexBackgroundColor propiedad (14776025)
    • Configuración del tipo de botón "Detalle" para el prototipo UITableViewCell – editingAccessoryType propiedad (15039987)

Instrumentos y simbolización

  • Instrumentos ahora encuentra símbolos de manera mucho más confiable. Si los símbolos no aparecen automáticamente, intente lo siguiente: instruments La herramienta de línea de comandos ahora admite la especificación del SDK del simulador y el tipo de dispositivo mediante el -w bandera Para ver una lista de las configuraciones del simulador admitidas, así como de los dispositivos conectados, ejecute instruments -s devices en una ventana de Terminal. (14996865)
    • Cuando la indexación de Spotlight está deshabilitada para datos derivados de Xcode, como cuando se usa /tmp, agregue una lista global de rutas de búsqueda adicionales configuradas en las preferencias de Instrumentos.
    • El menú contextual de una dirección ahora incluye la opción "Simbolizar con DSYM" para agregar un archivo de símbolo específico.
    • Utilice el comando Símbolos del menú Archivo para ver una lista más detallada del estado de bibliotecas y ejecutables individuales.
      • Las luces verdes indican la presencia de símbolos e información de fuente.
      • Las luces amarillas indican bibliotecas con algunos símbolos, pero aún pueden beneficiarse de la localización de un dSYM.
      • Las luces rojas indican situaciones que impiden el simbolismo. (14269449)

Instalación con script

  • Instalación de Device Support Ejecute desde la línea de comandos, Xcode.app toma el nuevo argumento de la línea de comandos, -installComponents. Cuando Xcode se ejecuta desde un script de línea de comandos con esta opción, instala los paquetes de soporte del dispositivo requeridos y luego se cierra. (15127411) 

General

  • Emoji y otros pares sustitutos de Unicode se admiten en la configuración del esquema y en los archivos del proyecto. (14837623 y 13827044)

Cambios

Construir la

  • Arm64 ahora está incluido en la configuración "Arquitecturas estándar". Xcode 5.0 introdujo soporte para crear aplicaciones iOS de 64 bits, pero no estaba habilitado de forma predeterminada. Para habilitar la opción de construir 64 bits en Xcode 5.0, se proporcionó una configuración de arquitectura: "Arquitecturas estándar que incluyen 64 bits" (ARCHS_STANDARD_INCLUDING_64_BIT).Con la introducción de Xcode 5.1, arm64 se incluye en la configuración de compilación predeterminada de "Arquitectura estándar". Esto da como resultado que los proyectos que utilizan la configuración predeterminada se construyan automáticamente para arm64 junto con las arquitecturas estándar de 32 bits.
  • Al compilar para todas las arquitecturas, elimine cualquier configuración de arquitecturas explícita y utilice la configuración de Arquitecturas estándar predeterminada. Para proyectos que previamente fueron elegidos para usar "Arquitecturas estándar, incluyendo 64 bits", vuelva a la configuración "Arquitecturas estándar".
  • Al abrir un proyecto existente por primera vez, Xcode 5.1 puede mostrar una advertencia sobre el uso de la configuración de arquitectura Xcode 5.0. Seleccionar la advertencia proporciona un flujo de trabajo para revisar la configuración.
  • Los proyectos que no son compatibles con 64 bits deben configurar específicamente la configuración de compilación de la arquitectura para que no incluya 64 bits.
  • Los proyectos configurados para utilizar "Arquitecturas estándar, incluidas 64 bits" se convertirán a "Arquitecturas estándar $(ARCHS_STANDARD).

Compilador

  • A partir del compilador Apple LLVM versión 5.1 (clang-502) y posteriores, el nivel de optimización -O4 ya no implica optimización del tiempo de enlace (LTO). Para construir con LTO utilice explícitamente el -flto opción además del indicador de nivel de optimización. (15633276)

Pruebas

  • El  gcov Se ha reimplementado una herramienta para pruebas de cobertura de código. La nueva versión utiliza el llvm-cov herramienta del proyecto LLVM. Es funcionalmente equivalente a la versión anterior en todas las características importantes. la ubicación de gcov dentro de Xcode también se ha movido, use xcrun para invocarlo. Si encuentra problemas, presente informes de errores. Para esta versión, aún puede utilizar la versión anterior de gcov de GCC, que está disponible como gcov-4.2. 11919694 actualizado

Problemas conocidos

Edición de interfaces de usuario

  • Las vistas personalizadas agregadas a una vista de pila en Interface Builder pueden quedarse atascadas en un estado de "vistas fuera de lugar" (inconsistentes). Como solución alternativa, establezca un tamaño intrínseco de marcador de posición para la vista personalizada con prioridades adecuadas de resistencia a la compresión y abrazo de contenido. (15778653)

Pruebas

  • Las pruebas automatizadas ejecutadas en iOS Simulator pueden fallar y generar un error similar a este:Test target [test name] encountered an error (Test process exited with code -1)Intente la recuperación saliendo y reiniciando el simulador. (15929053)

Servidor Xcode

  • Las funciones de integración continua (bots) de Xcode 5.1 requieren OS X Server v3.1 (o una versión de OS X Server 3.1 beta) o posterior. 16225068 actualizado
  • Si hay copias antiguas de Xcode en el servidor, Xcode Server a veces muestra todos los simuladores. Intente utilizar únicamente simuladores apropiados para su uso con Xcode 5.1. (15465692 y 15153869)
  • Xcode Server ofrecerá Todos los dispositivos o Todos los simuladores incluso si no hay ninguno que cumpla con los criterios del proyecto. Si selecciona un dispositivo o simulador inadecuado, puede recibir un error similar a:xcodebuild: error: No destinations were specified with the -destination flag which were valid for the specified scheme <scheme_name>.Para evitar que esto suceda, especifique sólo dispositivos o simuladores válidos para su proyecto. (15465222)
  • A veces, cuando intentas crear un nuevo repositorio local en OS X Server a través de Xcode, Xcode puede mostrar un mensaje de error similar a:xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.Para resolver este problema, siga las indicaciones en el cuadro de diálogo que se muestra en el sistema host del servidor OS X. (15475078 y 15486464)
  • A veces, después de actualizar a Xcode 5.1 y OS X Server 3.1, la primera vez que agrega un servidor puede ver un error similar a:"<Server> is running a version of OS X Server that cannot be used with this version of Xcode."Salga y reinicie Xcode una vez para borrar este mensaje. 16217715 actualización 

Simulador de iOS

  • Pueden surgir problemas de rendimiento al ejecutar aplicaciones dentro del simulador de iOS en OS X Mavericks con una versión simulada del sistema operativo iOS 6.1 o anterior. Una solución alternativa es desactivar la fusión del temporizador mientras se utiliza el simulador de iOS 6.1 o anterior ejecutando el siguiente comando en una ventana de Terminal :sudo sysctl -w kern.timer.coalescing_enabled=0 (15501929)
  • El simulador de iOS a veces deja de responder al teclado del hardware. Esto suele corregirse al salir y reiniciar el simulador. (14642684)

General

  • Al validar varias aplicaciones en secuencia utilizando Xcode Organizer, es posible que se emitan advertencias erróneas sobre los ID de los paquetes. Si se producen estas advertencias, cierre y reinicie Xcode entre validaciones. 15113664 actualizado
  • Los ejecutables creados por Xcode 5.1 pueden fallar en OS X v10.5. (15852259) actualizado

Problemas resueltos

Pruebas

  • El  XCTAssertEqual macro (anteriormente STAssertEquals usando OCUnit) compara correctamente valores escalares de diferentes tipos sin conversión, por ejemplo, int yNSInteger. Ya no puede aceptar tipos no escalares, como estructuras, para comparar. (14435933)

General

  • Las aplicaciones de OS X que requieren un perfil de aprovisionamiento, como las que usan iCloud, ahora se compilan, tienen el código firmado correctamente y se inician. (15841159)

Desaprobaciones

  • OCUnit y el marco SenTestingKit están en desuso y se eliminarán de una versión futura de Xcode. El código fuente que usa OCUnit genera advertencias mientras se compila en Xcode 5.1. Migre a XCTest usando el comando de menú "Editar > Refactor > Convertir a XCTest...". .
  • El marco ATS está en desuso. El código fuente que utiliza las API de ATS generará advertencias mientras se compila. Para la versión 10.8, no habrá pérdida de funcionalidad, pero podría haber áreas donde el rendimiento se verá afectado. Reemplace todo el código ATS (incluido ATSUI) con CoreText. La funcionalidad ATS se eliminará en futuras versiones de OS X. Más información sobre este cambio está disponible enGuía de programación de texto básico.