Agregar una height
propiedad calculada (conveniente) UIView
en mi UIViewExtension.swift
archivo está causando que el compilador Swift tenga errores de segmentación ... ¿Qué podría estar fallando aquí?
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
Si se necesita más información para descifrar esto, simplemente comente. ¡Gracias!
Editar:
Aquí hay un .xcodeproj relacionado que devuelve el error del compilador de esta pregunta. Descarga aquí
Respuestas:
Tuve este error porque estaba haciendo esto:
en vez de
así que creo que opcional no se desenvuelve si la condición puede causar este error
fuente
Cuando te encuentras con un error de segmento del compilador en Swift, no obtienes un número de línea útil ni un mensaje de error. Así es como puede rastrear el problema:
SegFaultDebugger.swift
en su proyecto.SegFaultDebugger.swift
.En este punto, sucede una de tres cosas:
SegFaultDebugger.swift
nuevo al archivo original y mueva un conjunto diferente de métodos aSegFaultDebugger.swift
. RepetirSegFaultDebugger.swift
: ¡Genial! Ahora use la búsqueda binaria para fijar la falla de segmento a un método específico hasta que pueda averiguar qué construcción la está causando.fuente
Recibí este error al extender uno de mis protocolos y un argumento de tipo opcional y mal escrito.
La diferencia en los argumentos de la función
String
en el prototipo yString?
en la extensión causó la falla de segmentación 11 .fuente
También tuve este error y lo arreglé así:
Verifique su proyecto y descubra qué archivos se usan dos veces y elimine uno, o elimínelos y vuelva a agregarlos todos.
Errores en mi Xcode:
fuente
En Xcode 7, puede hacer clic en el error en Debug Navigator y se le mostrará una vista ampliada de los bloqueos. Al hacer clic en el botón de hamburguesa a la derecha, se expande el error, y si se desplaza hasta la parte inferior del mensaje de error expandido, verá de dónde proviene.
Para mí, tuve dos de esos errores de falla de segmentación. En la imagen de arriba, la primera es cómo se ve cuando se contrae, la segunda es cuando expande el botón de hamburguesa. En la parte inferior del cuadro gris expandido, verá un mensaje que dice dónde se bloqueó el compilador.
Sin embargo, tenga en cuenta que el mensaje de error a veces puede no ser lo suficientemente informativo, por lo que si bien le dice dónde se bloqueó, no siempre dice por qué y cómo solucionarlo. Deshacerse de este error sigue siendo una cuestión de conjeturas.
fuente
Descubrí una solución alternativa simple hasta que el problema se solucione en una futura compilación de Xcode / Swift:
.swift
archivo que se está utilizando.En el proyecto de ejemplo que proporcionó, coloque el contenido de
UIViewExtension.swift
yCALayerExtension.swift
arribaAppDelegate.swift
Con suerte, esto puede hacernos escribir código Swift funcional hasta que se solucione el problema.
fuente
En cuanto a mí, agregando
private
a static var fixed clang crash:fuente
Tuve una falla de segmentación del compilador en una declaración como esta:
En su lugar, hice una declaración if-else y funciona.
fuente
También puede tener este problema si declara una condición con un Bool sin envolver como propiedad
fuente
En mi caso, los dos puntos perdidos durante la interpolación de cadenas rompieron el mío (XCode 6.1.1).
Ejemplo:
cuando quise hacer:
fuente
Este error me sucedió cuando intenté anular la variable débil de la clase principal.
En clase base:
Clase derivada:
El error desapareció cuando eliminé
=nil
de la clase derivada.fuente
Atrapo alguna excepción hoy
y esto lo resolvió:
Debido a que "Any" tipo es cualquier tipo de evento "nil", "AnyObject", opcional, ... :) No puede ser opcional, ya es opcional.
fuente
Este error también ocurre si declara accidentalmente una variable con un tipo que coincide con su nombre:
fuente
Se encontró con este error debido a un tipo genérico extraño en una función de operador, por ejemplo
En mi caso, eliminar
<T>
resolvió el problema.fuente
En mi caso había declarado un
struct
inside afunc
. Moviendo elstruct
al nivel de clase resolvió el problema.Ahora que escribo esto, recuerdo haber tenido problemas con el
struct
interiorfunc
s antes. Fue algo más que la falla de segmentación (que parece volverse notoria con la beta de Swift 1.2). Dios mío, Apple, ¿qué estás haciendo allí?fuente
En mi caso, este error porque uso el nombre de clase para la variable
Y esto soluciona mi problema
fuente
En mi caso, esto sucedió cuando hice una inicialización estática incorrecta en un protocolo. Encontré una forma de desplazarme, pero un compilador nunca debería producir una falla de segmentación durante la .
Hay tres archivos involucrados. Un protocolo NamedSegues.swift, un TableViewController personalizado que, entre otras cosas, implementa el protocolo que contiene una devolución de llamada, una TableViewCell personalizada que hace referencia a este protocolo para llamar a la devolución de llamada.
Lo superé usando?
En el archivo de protocolo, archivo1: elimina la declaración de getDefault () En el archivo CustomController2: elimina la implementación de getDefault. En CustomCellView, file3:
¡El compilador debería haber captado esto y haber dado algún mensaje de error en lugar de lanzar un error de segmentación durante la compilación!
fuente
¡Parece que el compilador de Swift 2 no estaba listo para el horario de máxima audiencia! En caso de que esto ayude a alguien, estaba obteniendo una falla de segmentación: 11 debido a una falta de coincidencia con el tipo de variable en un encabezado de cierre, específicamente en un método Parse,
PFQuery.query.findObjectsInBackgroundWithBlock
.Puede ver el problema con más detalle aquí: https://github.com/ParsePlatform/Parse-SDK-iOS-OSX/issues/280
fuente
Como dijo @Fjohn , este fue un problema relacionado con desenvolver un opcional para mí (se rompió tanto en Xcode 7.0 beta 6 como en Xcode 7). En mi caso, no estaba desenvolviendo opcional de lo opcional (lo que me dio la pista fue doble en el descriptor. Usar if let resolvió el problema
fuente
Como otros escribieron anteriormente, para mí esto sucedió cuando estoy usando una extensión sobre un protocolo, pero la firma de los métodos en el protocolo no coincide con las implementaciones en una extensión.
En mi caso, había agregado un nuevo parámetro a la implementación (en la extensión) pero olvidé agregarlo también a la firma del método en el protocolo.
fuente
en mi caso, intenté agregar un parámetro de función después de un parámetro variadic.
Invertir la secuencia de parámetros y hacer que el parámetro variadic sea el último parámetro en la lista de parámetros lo solucionó.
fuente
Esto suele ocurrir cuando el compilador no tiene suficiente información (a pesar de lo que piense) para garantizar / determinar el estado de una declaración o una variable dentro de una declaración.
Por ejemplo, imagine que tiene un diccionario de tipo [Cadena: Cadena] que llena con nombres de ciudades como claves y una lista separada por comas de los códigos postales / códigos postales correspondientes.
Imagina que en algún lugar de tu código deseas actualizar la lista de códigos correspondientes:
En este caso, el compilador responderá con un error de segmentación como
town
podría no estar en el diccionario y, por lo tanto, no puede garantizar que la declaración anterior tenga un valor válido.Para resolver esto, debe almacenar el estado actual de
myDict[town]
en una variable separada que le permita manejar el caso dekey not in dict
y luego actualizar el valor de la clave dada:Desafortunadamente, no siempre es sencillo determinar la causa raíz, así que espero que este sencillo ejemplo ayude.
fuente
Swift 3.0 (Xcode 8.1) presenta este problema cuando un protocolo declara una variable opcional y un implementador implementa esa variable como una inicializada diferida.
El error se informa aquí: https://bugs.swift.org/browse/SR-1825
fuente
Xcode 8.2.
Agregar la
@nonobjc
implementación del protocolo a la extensión provoca fallas de segmentación. Mueva la@nonobjc
implementación del protocolo a la implementación de la clase.fuente
En mi caso, el culpable sobrecargó accidentalmente una función que esperaba un argumento de matriz con uno con un argumento variadic :
Cuando la superclase lo tenía definido como una matriz:
fuente
Para mí, lo siguiente causó un error de segmentación, mientras que
type
es opcional:y esto lo resolvió:
fuente
Recibí este error con la siguiente firma de método en un UITableViewController personalizado.
cambiando a:
solucionó el problema.
fuente
Tuve el mismo problema en una extensión. Mi extensión tenía dos inicializadores de conveniencia:
Para deshacerme del error, agregué un mapa de método de instancia (diccionario: NSDictionary) y el error de falla de segmentación desapareció.
fuente
Para mí, el problema era que mis arquitecturas no se ajustaran al estándar. Había agregado i386 o algo así, simplemente lo configuré de nuevo al arco xcodeproject predeterminado y se compiló bien.
fuente
Tuve el mismo problema en un proyecto rápido. El problema era una función que debería haber devuelto un objeto, pero no tenía retorno. Este tipo de error solía ser señalado durante la edición con Obj-C. Parece que no es el caso de Swift.
fuente