Adicionar uma height
propriedade computada (conveniente) ao UIView
meu UIViewExtension.swift
arquivo está causando o segfault do compilador Swift ... O que pode estar errado aqui?
0 swift 0x00000001061e5608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x00000001061e5af4 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff894da5aa _sigtramp + 26
3 libsystem_platform.dylib 0xb03939841e997c88 _sigtramp + 2504775416
4 swift 0x00000001064c8bb9 swift::NominalTypeDecl::getMembers(bool) const + 41
5 swift 0x00000001055efab9 swift::irgen::ClassMetadataLayout<(anonymous namespace)::FindClassMethodIndex>::addClassMembers(swift::ClassDecl*) + 329
6 swift 0x00000001055e97b2 swift::irgen::emitVirtualMethodValue(swift::irgen::IRGenFunction&, llvm::Value*, swift::SILType, swift::SILDeclRef, swift::CanTypeWrapper<swift::SILFunctionType>, swift::ResilienceExpansion) + 434
7 swift 0x00000001056550d3 swift::SILVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::ValueBase*) + 42611
8 swift 0x000000010564a266 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 8678
9 swift 0x00000001055cb6f8 swift::irgen::IRGenModule::emitGlobalTopLevel() + 184
10 swift 0x00000001056376e3 performIRGeneration(swift::IRGenOptions&, swift::Module*, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, unsigned int) + 1859
11 swift 0x0000000105638033 swift::performIRGeneration(swift::IRGenOptions&, swift::SourceFile&, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, unsigned int) + 51
12 swift 0x00000001055aa65a frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 4842
13 swift 0x00000001055a935d main + 1533
14 libdyld.dylib 0x00007fff8a82e5fd start + 1
1. While emitting IR SIL function @_TFCSo6UIViewg6heightSd for 'anonname=0x7ff422892fd0' at <path redacted>/UIViewExtension.swift:60:5
<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
Se mais informações forem necessárias para quebrar isso, apenas comente. Obrigado!
Editar:
Aqui está um .xcodeproj relacionado que retorna o erro do compilador desta pergunta. Baixe aqui
Respostas:
Eu tive este erro porque estava fazendo isso:
ao invés de
então eu acho que a condição opcional não desembrulhada pode causar este erro
fonte
Quando você encontra um segfault do compilador no Swift, não obtém um número de linha útil e uma mensagem de erro. Veja como você pode rastrear o problema:
SegFaultDebugger.swift
em seu projeto.SegFaultDebugger.swift
.Nesse ponto, uma das três coisas acontece:
SegFaultDebugger.swift
volta para o arquivo original e mova um conjunto diferente de métodos para dentroSegFaultDebugger.swift
. RepetirSegFaultDebugger.swift
: Ótimo! Agora use a pesquisa binária para fixar o segfault em um método específico até que você possa descobrir qual construção está causando isso.fonte
Recebi este erro ao estender um dos meus protocolos e digitei incorretamente o argumento de tipo opcional.
A diferença nos argumentos da função
String
no protótipo eString?
na extensão causou a falha de segmentação 11 .fonte
Eu também tive esse erro e o corrigi assim:
Verifique seu projeto e descubra quais arquivos são usados duas vezes e remova um, ou exclua e adicione novamente todos.
Erros no meu Xcode:
fonte
No Xcode 7, você pode clicar no erro no Debug Navigator e será exibida uma visão expandida das falhas. Clicar no botão de hambúrguer à direita expande o erro e, se você rolar até a parte inferior da mensagem de erro expandida, verá de onde ele vem.
Para mim, tive dois desses erros de falha de segmentação. Na imagem acima, o primeiro é o que parece quando está recolhido, o segundo é quando você expande o botão de hambúrguer. Na parte inferior da caixa cinza expandida, você verá uma mensagem que diz onde o compilador travou.
No entanto, observe que a mensagem de erro pode às vezes não ser informativa o suficiente, portanto, embora diga onde ele travou, nem sempre diz por que e como corrigi-lo. Livrar-se desse erro ainda é uma questão de adivinhação.
fonte
Eu descobri uma solução simples até que o problema seja corrigido em uma versão futura do Xcode / Swift:
.swift
arquivo que está sendo usado.No projeto de exemplo que você forneceu, coloque o conteúdo de
UIViewExtension.swift
eCALayerExtension.swift
acimaAppDelegate.swift
Esperançosamente, isso pode nos levar a escrever um código Swift funcional até que o problema seja resolvido.
fonte
Quanto a mim, adicionando
private
ao estático var fixed clang crash:fonte
Tive uma falha de segmentação do compilador em uma instrução como esta:
Em vez disso, acabei de fazer uma instrução if-else e funciona.
fonte
Você também pode ter esse problema se declarar uma condição com um Bool não empacotado como uma propriedade
fonte
No meu caso, dois pontos mal colocados durante a interpolação de string quebraram o meu (XCode 6.1.1).
Exemplo:
quando eu pretendia fazer:
fonte
Este erro aconteceu comigo quando tentei substituir a variável fraca da classe pai.
Na classe base:
Classe derivada:
O erro desapareceu quando removi
=nil
da classe derivada.fonte
Eu peguei alguma exceção hoje
e isso resolveu:
Porque o tipo "Any" é qualquer tipo de evento "nil", "AnyObject", opcional, ... :) Não pode ser opcional, já é opcional.
fonte
Este erro também ocorre se você declarar acidentalmente uma variável com um tipo correspondente ao seu nome:
fonte
Encontrou este erro devido a um tipo genérico estranho em uma função de operador, por exemplo
No meu caso, a remoção
<T>
resolveu o problema.fonte
No meu caso, declarei um
struct
dentro de afunc
. Movendo ostruct
para o nível de classe resolveu o problema.Agora que escrevo isso, lembro-me de ter tido problemas com os
struct
sistemas internosfunc
antes. Era algo mais do que a falha de segmentação (que parece se tornar notória com o Swift 1.2 beta). OMG Apple, o que você está fazendo aí?fonte
No meu caso, este erro porque eu uso o nome da classe para a variável
E isso resolve meu problema
fonte
No meu caso, isso aconteceu quando eu fiz uma inicialização estática incorreta em um protocolo. Eu encontrei uma maneira de contornar, mas um compilador nunca deve produzir uma falha de segmentação durante a construção.
Existem três arquivos envolvidos. Um protocolo NamedSegues.swift, um TableViewController personalizado que, entre outras coisas, implementa o protocolo que contém um retorno de chamada, um TableViewCell personalizado que contém referência a este protocolo para chamar o retorno de chamada.
Eu consegui contornar isso usando?
No arquivo de protocolo, arquivo1: exclua a declaração de getDefault () No arquivo CustomController, exclua a implementação de getDefault. No CustomCellView, file3:
O compilador deveria ter detectado isso e dado alguma mensagem de erro em vez de lançar uma falha de segmentação durante a compilação!
fonte
Parece que o compilador Swift 2 pode não estar totalmente pronto para o horário nobre! Caso isso ajude alguém, eu estava recebendo uma falha de segmentação: 11 devido a uma incompatibilidade com o tipo de variável em um cabeçalho de encerramento, especificamente em um método Parse,
PFQuery.query.findObjectsInBackgroundWithBlock
,.Você pode ver o problema com mais detalhes aqui: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/280
fonte
Como @Fjohn disse, esse era um problema relacionado ao desembrulhar um opcional para mim (quebrado tanto no Xcode 7.0 beta 6 quanto no Xcode 7). No meu caso, eu não estava desembrulhando opcional do opcional (o que me deu a dica foi duplo ?? no descritor. Usar if let resolveu o problema
fonte
Como outros escreveram acima, para mim, isso aconteceu quando estou usando uma extensão sobre um protocolo, mas a assinatura de métodos no protocolo não corresponde às implementações em uma extensão.
No meu caso, adicionei um novo parâmetro à implementação (na extensão) mas esqueci de adicioná-lo também à assinatura do método no protocolo.
fonte
no meu caso, tentei adicionar um parâmetro de função após um parâmetro variável.
Reverter a sequência de parâmetros e tornar o parâmetro variável o último parâmetro na lista de parâmetros corrigiu isso.
fonte
Isso normalmente acontece quando o compilador não tem informações suficientes (apesar do que você pensa) para garantir / determinar o estado de uma instrução ou de uma variável dentro de uma instrução.
Por exemplo, imagine que você tem um dicionário do tipo [String: String] que você preenche com nomes de cidades como chaves e uma lista separada por vírgulas de CEPs / códigos postais correspondentes.
Imagine que em algum lugar do seu código você deseja atualizar a lista de códigos correspondentes:
Nesse caso, o compilador responderá com falha de segmentação, pois
town
pode não estar no dicionário e, portanto, não pode garantir que a instrução acima terá um valor válido.Para resolver isso, você deve armazenar o estado atual de
myDict[town]
em uma variável separada, permitindo que você trate o caso dekey not in dict
e, em seguida, atualize o valor para a chave fornecida:Infelizmente, nem sempre é fácil determinar a causa raiz, então espero que este exemplo simples ajude.
fonte
O Swift 3.0 (Xcode 8.1) apresenta esse problema quando um protocolo declara uma variável opcional e um implementador implementa essa variável como inicializada lentamente.
O bug é relatado aqui: https://bugs.swift.org/browse/SR-1825
fonte
Xcode 8.2.
Adicionar
@nonobjc
implementação de protocolo à extensão causando falhas de segmentação. Mova a@nonobjc
implementação do protocolo para a implementação da classe.fonte
No meu caso, o culpado estava acidentalmente sobrecarregando uma função que esperava um argumento de matriz com um com um argumento variável :
Quando a superclasse o definiu como uma matriz:
fonte
Para mim, o seguinte causou um segfault enquanto
type
é opcional:e isso resolveu:
fonte
Recebi este erro com a seguinte assinatura de método em um UITableViewController personalizado.
mudando para:
corrigiu o problema.
fonte
Tive o mesmo problema em uma extensão. Minha extensão tinha dois inicializadores de conveniência:
Para me livrar do erro, adicionei um mapa de método de instância (dicionário: NSDictionary) e o erro de falha de segmentação desapareceu.
fonte
Para mim, o problema era não ter minhas arquiteturas definidas para o padrão. Eu tinha adicionado i386 ou algo assim, apenas defina-o de volta para o arco xcodeproject padrão e ele compilou bem.
fonte
Eu tive o mesmo problema em um projeto rápido. O problema era uma função que deveria ter retornado um objeto, mas não tinha retorno. Este tipo de erro costumava ser sinalizado durante a edição com Obj-C. Parece que não é o caso em Swift.
fonte