Después de actualizar a Xcode 11.2 desde Xcode 11.1, mi aplicación se bloquea:
*** Finalización de la aplicación debido a la excepción no detectada 'NSInvalidUnarchiveOperationException', razón: 'No se pudo crear una instancia de la clase llamada _UITextLayoutView porque no se encontró ninguna clase llamada _UITextLayoutView; la clase debe definirse en el código fuente o vincularse desde una biblioteca (asegúrese de que la clase sea parte del objetivo correcto) '
¿Por qué está pasando esto? ¿Cómo puedo prevenir este bloqueo?
Respuestas:
Enhorabuena
La nueva versión de Xcode (11.2.1) está disponible ahora, que es la mejor manera de deshacerse de este problema.
Soluciones alternativas
@Mojtaba Hosseini, la solución que propuse fue de la ayuda y la participación de mi parte a mis colegas desarrolladores sobre StackOverflow. Usted, yo y el resto del desarrollador aquí ya sabemos que cuando Apple anuncie la nueva versión, este problema desaparecerá.
Pero al lado de todo
La solución mencionada anteriormente fue definitivamente aceptada por Apple Review, ya que no hay ninguna API privada involucrada en absoluto. Este enfoque es muy similar a la propiedad de creación como
O
Entonces, cuando está creando una propiedad, está utilizando directamente los componentes privados de APPLE y los modula según sus necesidades o requisitos.
El ejemplo simple son las clases de AMFNetworking
Espero haber terminado con la acusación
La respuesta a continuación fue solo un poco de ayuda de mi parte para permitir que el desarrollador continúe desarrollando, ya que inicialmente propusimos que el desarrollador retrotraiga Xcode. Fue una mala práctica volver a descargar Xcode de 8 GB ya que todos sabemos que la nueva versión de Xcode se lanzará pronto.
Si bien está corregido en Xcode 11.2.1, obtuve una solución para Xcode 11.2 por la cual puede deshacerse de este bloqueo:
SOLUCIÓN
Vaya a la búsqueda de Configuración de compilación para "DEAD_CODE_STRIPPING" y configúrelo en NO
Entonces
UITextViewWorkaround.h
UITextViewWorkaround.m
Compila el código y tendrás una aplicación en ejecución :)
fuente
Actualización: ¡arreglado! 🎉🎊
La ÚNICA solución es actualizar
Este error se corrigió en Xcode 11.2.1. Así que puedes descargarlo y usarlo desde aquí.
Xcode 11.2 está en desuso por Apple el 5 de noviembre de 2019
Si alguna vez intenta enviar su aplicación que se compila con Xcode 11.2 a la AppStore, será rechazado:
Advertencia de funcionamiento de App Store Connect
Entonces, todas las soluciones alternativas hechas con Xcode 11.2 son inútiles
Es un error para Xcode 11.2, y se corrigió en Xcode 11.2.1.
Solución (es)
Volver al rollo anterior Xcode liberación de la versión de:Rollback no es una opción más y AppStore rechazará cualquier acumulación con Xcode continuación 11.2.1 echar un vistazo a esteTenga en cuenta que debe usar Safari para descargarlo y primero debe iniciar sesión en el portal de desarrolladores de Apple .
Puede encontrar todas las otras versiones de Xcode y otros enlaces de recursos (incluidas las versiones de lanzamiento y beta) aquí en https://developer.apple.com/download/moreLa solución
Esto es muy difícil pero está trabajando para solucionarlo. Reemplace todos los
UITextView
s en storyboard sy Xib s con la versión de código puro .Tenga en cuenta que este error es encontrado y reparado por Apple
También anteriormente, el error fue confirmado por Apple Staff edford
Para aquellos con iOS 13.2 y que ya no pueden usar Xcode 11.1:
Para aquellos con storyboard:
UITextView
UITextView
objetos.Para aquellos que se sienten cómodos con el método swizzling (Objc y comportamiento dinámico)
Diríjase a la respuesta @aftab muhammed khan para Objective-C y la respuesta @MikRo para la versión adaptada SwiftSimplemente no lo hagas más:
¡Incluso si estas dos últimas soluciones alternativas no están utilizando la API privada de Apple , serán rechazadas en AppStore porque Apple no aceptará compilaciones con versiones de Xcode en 11.2.1 !
Una vez mas:
Xcode 11.2 está en desuso por Apple el 5 de noviembre de 2019
fuente
CMD + Shift + K
)El problema se solucionó en Xcode 11.2.1.
EDITAR: a medida que se publica la solución, debe cambiar a esa versión de Xcode y comentar esta solución. Como Mojtaba Hosseini en su respuesta mencionó:
Para el tiempo hasta que Apple lanzó la solución, esta fue una buena solución para continuar desarrollando y probando.
Para Xcode 11.2, basado en la idea de Aftab Muhammed Khan y con la ayuda de John Nimis, acabo de probar el siguiente código.
¡No es necesario cambiar los archivos del guión gráfico!
Edité mi archivo AppDelegate.swift y agregué esta clase
y dentro de la llamada de delegado para "didFinishLaunchingWithOptions" llame a la solución
fuente
He adaptado la solución Obj-C de khan a Swift :
Llámalo al final de
didFinishLaunchingWithOptions
inAppDelegate
.Gracias @Aftab!
fuente
didFinishLaunchingWithOptions
Una solución más rápida:
Agregue este código en algún lugar y luego reemplace todas las instancias del guión gráfico
FixedTextView
.Nota: perderá cualquier atributo creado en los guiones gráficos. Esto podría tener serias implicaciones (por ejemplo, configuración de delegado, tamaño, etc.)
fuente
Solución actualizada: Actualización a Xcode 11.2.1 . Funciona en dispositivos iOS 11, 12 o 13 para mí.
Consulte la documentación de Apple. Esta actualización soluciona un problema crítico que podría causar que las aplicaciones que usan UITextView se bloqueen.
Solución anterior: Xcode 11.1 descargado de https://developer.apple.com/download/more/ Cambiar de 11.2 a 11.1 solucionó el bloqueo.
Además, para mí, incluso con Xcode 11.2, cuando actualicé mi iPhone a 13.2, eso solucionó el bloqueo.
fuente
11.2.1 Semilla GM resuelve este problema
(y se puede usar para publicar en App Store)
Vaya a https://developer.apple.com/download/ . Descargar Xcode 11.2.1 GM seed
Las notas de la versión confirman que corrige este error:
fuente
Puede descargar la última versión beta de Xcode (11.2.1 GM) del sitio web para desarrolladores de Apple.
Aquí el enlace directo
fuente
Mejora en la respuesta de @garafajon. Para mí funciona en la mayoría de los casos.
fuente
Como solución "rápida", puede agregarla
UITextView
directamente desde el código y no a través de IB. Al menos funcionó para mí. Aunque desde mi punto de vista, es mejor retroceder a Xcode anterior / esperar al nuevo.fuente
Es un error con Xcode 11.2. Las vistas de texto subclasificadas se bloquean en todos los dispositivos que no tienen instalada la nueva compilación de iOS (13.2). Probablemente sea mejor no compilar una versión con esa compilación.
Tu puedes ahora:
fuente
Utilicé una solución exitosa, pero fue dolorosa. Este es el proceso que seguí:
TextView
. En mi caso:id
(en mi caso:id="782-j1-88c"
)Hacer esto solucionó el problema para mí sin pérdida en la funcionalidad deseada. Afortunadamente, solo tenía uno
UITextView
para reemplazar. De lo contrario, esto se vuelve insostenible.fuente
Tuve el mismo problema: acabo de actualizar mi Xcode 11.2 a 11.2.1, funcionó bien.
Después de la actualización, probé lo mismo en iOs 13 y iOS 12 y estaba funcionando bien.
fuente
1. Problema:
Hay un problema con Xcode 11.2 en el que Storyboards que contiene un UITextView hará que la aplicación se bloquee en las versiones del sistema operativo anteriores a iOS 13.2 si se compila con Xcode 11.2.
Consulte esta documentación de Apple .
2. Solución:
La única solución es actualizar su Xcode a 11.2.1 u 11.3.
Xcode 11.2.1 se lanzó especialmente para solucionar este problema de bloqueo.
Consulte esta documentación de Apple.
3. Sugerencia:
Te sugiero que vayas con la última versión de Xcode 11.3 ya que esto admite el desarrollo de aplicaciones para iOS 13.3 y también hay muchas características nuevas. Consulte esta documentación de Apple .
fuente
Este problema se solucionó en Xcode versión 11.2.1 y se menciona en las notas de la versión:
fuente