Após a atualização para o Xcode 11.2 do Xcode 11.1, meu aplicativo falha:
*** Finalizando o aplicativo devido à exceção não capturada 'NSInvalidUnarchiveOperationException', motivo: 'Não foi possível instanciar a classe denominada _UITextLayoutView porque nenhuma classe denominada _UITextLayoutView foi encontrada; a classe precisa ser definida no código-fonte ou vinculada a partir de uma biblioteca (verifique se a classe faz parte do destino correto) '
Por que isso está acontecendo? Como posso evitar esta falha?
Respostas:
Parabéns
A nova versão do Xcode (11.2.1) está disponível agora, que é a melhor maneira de se livrar desse problema.
Soluções alternativas
@Mojtaba Hosseini, a solução que propus foi a ajuda e a participação do meu lado para meus colegas desenvolvedores no StackOverflow. Você, eu e todo o restante do desenvolvedor aqui já sabemos que, quando a nova versão for anunciada pela Apple, esse problema será eliminado.
Mas ao lado de tudo
A solução mencionada acima foi definitivamente aceita pela Apple Review, pois não há API privada envolvida. Essa abordagem é muito semelhante à propriedade de criação, como
Ou
Portanto, ao criar uma propriedade, você está usando diretamente o APPLE Private Components e re-modulando-a conforme sua necessidade ou necessidade.
O exemplo simples é AMFNetworking classes
Espero que eu terminei com a Alegação
A resposta abaixo foi apenas uma ajuda da minha parte para permitir que o desenvolvedor continue desenvolvendo conforme você propôs inicialmente que o desenvolvedor reverta o Xcode. Foi uma prática ruim fazer o download do Xcode de 8 GB novamente, pois todos sabemos que a nova versão do Xcode será lançada em breve.
Enquanto ele está corrigido no Xcode 11.2.1, eu tenho uma solução para o Xcode 11.2 pela qual você pode se livrar dessa falha:
SOLUÇÃO
Vá para a pesquisa Configuração de compilação para "DEAD_CODE_STRIPPING" e defina-o como NO
Então
UITextViewWorkaround.h
UITextViewWorkaround.m
Compile o código e você terá um aplicativo em execução :)
fonte
Atualização: corrigida! 🎉🎊
A única solução é atualizar
Este bug foi corrigido no Xcode 11.2.1. Então você pode baixar e usá-lo aqui.
O Xcode 11.2 foi descontinuado pela Apple em 5 de novembro de 2019
se você tentar enviar seu aplicativo criado com o Xcode 11.2 para a AppStore, será rejeitado:
Aviso de operação de conexão da App Store
Portanto, todas as soluções alternativas feitas com o Xcode 11.2 são inúteis
É um bug do Xcode 11.2 e corrigido no Xcode 11.2.1.
Solução (s)
Reverter para Xcode anterior liberação versão de:Reversão não é mais uma opção e AppStore irá rejeitar qualquer construção com o Xcode abaixo 11.2.1 dar uma olhada nesteObserve que você deve usar o Safari para fazer o download e primeiro fazer login no portal de desenvolvedores da Apple .
Você pode encontrar todas as outras versões do Xcode e o link de outros recursos (incluindo as versões beta e de lançamento) aqui em https://developer.apple.com/download/moreA solução alternativa
Isso é muito difícil, mas funciona como solução alternativa. Substitua todas as
UITextView
s em storyboard s e Xib s com o código puro versão.Observe que esse bug foi encontrado e corrigido pela Apple
Ainda mais cedo, o bug foi confirmado pela Apple Staff edford
Para aqueles com iOS 13.2 e não podem mais usar o Xcode 11.1:
Para aqueles com storyboard:
UITextView
UITextView
objetosPara quem se sente à vontade com o método swizzling (Objc e comportamento dinâmico)
Vá para a resposta @aftab muhammed khan da Objective-C e a resposta @MikRo da versão adaptada do SwiftSó não faça mais:
Mesmo que essas duas últimas soluções alternativas não utilizem a API privada da Apple , elas serão rejeitadas na AppStore porque a Apple não aceitará builds com versões do Xcode em 11.2.1 !
E mais uma vez:
O Xcode 11.2 foi descontinuado pela Apple em 5 de novembro de 2019
fonte
CMD + Shift + K
)O problema foi corrigido no Xcode 11.2.1.
EDIT: Como a correção foi lançada agora, você deve mudar para essa versão do Xcode e comentar esta solução alternativa. Como Mojtaba Hosseini em sua resposta mencionou:
Até o momento em que a correção foi lançada pela Apple, essa foi uma boa solução para continuar desenvolvendo e testando.
Para o Xcode 11.2, com base na idéia de Aftab Muhammed Khan e com a ajuda de John Nimis, testei o código a seguir.
Não é necessária nenhuma alteração nos arquivos do storyboard!
Editou meu arquivo AppDelegate.swift e adicionou esta classe
e, na chamada de delegado para "didFinishLaunchingWithOptions", chame a solução alternativa
fonte
Adaptei a solução Obj-C de khan ao Swift :
Chamá-lo no final do
didFinishLaunchingWithOptions
noAppDelegate
.Obrigado @Aftab!
fonte
didFinishLaunchingWithOptions
Uma correção mais rápida:
Adicione esse código em algum lugar e substitua todas as instâncias do storyboard para
FixedTextView
.Nota: você perderá todos os atributos criados nos storyboards. Isso pode ter sérias implicações (por exemplo, configuração do delegado, tamanho, etc.)
fonte
Solução atualizada : atualização para o Xcode 11.2.1 . Funciona em dispositivos iOS 11, 12 ou 13 para mim.
Consulte a documentação da apple Esta atualização corrige um problema crítico que poderia causar falhas nos aplicativos usando o UITextView.
Solução antiga: O Xcode 11.1 baixado de https://developer.apple.com/download/more/ A mudança de 11.2 para 11.1 corrigiu a falha.
Além disso, para mim, mesmo com o Xcode 11.2, quando atualizei meu iPhone para 13.2, isso corrigiu a falha.
fonte
11.2.1 A semente GM resolve esse problema
(e pode ser usado para publicar na App Store)
Vá para https://developer.apple.com/download/ . Faça o download da semente GM do Xcode 11.2.1
As notas de versão confirmam que corrige este erro:
fonte
Você pode baixar a última versão beta do Xcode (11.2.1 GM) no site do desenvolvedor da Apple.
Aqui o link direto
fonte
Melhorando na resposta @garafajon. Para mim, funciona na maioria dos casos.
fonte
Como uma correção "rápida", você pode adicionar
UITextView
diretamente do código e não via IB. Pelo menos funcionou pra mim. Embora, do meu ponto de vista, seja melhor reverter para o Xcode anterior / aguardar o novo.fonte
É um erro do Xcode 11.2. As visualizações de texto subclassificadas estão travando em todos os dispositivos que não possuem a nova versão iOS build (13.2) instalada. Você provavelmente não deve criar uma versão com essa versão.
Agora você pode:
fonte
Usei uma solução alternativa bem-sucedida, mas foi dolorosa. Este é o processo que eu segui:
TextView
. No meu caso:id
(no meu caso:id="782-j1-88c"
:)Isso resolveu o problema para mim, sem perda da funcionalidade desejada. Felizmente eu tinha apenas um
UITextView
para substituir. Caso contrário, isso fica insustentável.fonte
Eu tive o mesmo problema, acabei de atualizar meu Xcode 11.2 para 11.2.1, funcionou bem.
Após a atualização, testei o mesmo no iOs 13 e no iOS 12 e estava funcionando bem.
fonte
1. Problema:
Há um problema no Xcode 11.2, em que os Storyboards contendo um UITextView causam uma falha do aplicativo nas versões do sistema operacional anteriores ao iOS 13.2, se compiladas com o Xcode 11.2.
Verifique esta documentação da apple .
2. Solução:
A única solução é atualizar o seu Xcode para 11.2.1 ou 11.3.
O Xcode 11.2.1 foi lançado especialmente para corrigir esse problema de falha.
Verifique esta documentação da apple.
3. Sugestão:
Eu sugiro que você use a versão mais recente do Xcode 11.3, pois ele suporta o desenvolvimento de aplicativos para iOS 13.3 e também há muitos novos recursos. Verifique esta documentação da apple .
fonte
Esse problema foi corrigido no Xcode versão 11.2.1 e destacado nas notas de versão:
fonte