J'ai un programme Swift iOS qui compile et fonctionne correctement sur Xcode Beta2. Lorsque j'ai téléchargé la version 4, j'ai eu quelques erreurs de syntaxe pour la nouvelle langue Swift que j'ai corrigées. J'ai maintenant cette erreur:
<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)
Le problème est que cela ne me dit pas où se trouve cette erreur afin que je puisse la résoudre plus en profondeur. Où puis-je taper -v afin de "voir l'invocation" et de dépanner davantage? Sans cela, il n'y a absolument aucun moyen de résoudre le problème. Merci d'avance.
Voici comment j'ai pu découvrir le problème:
1. While emitting IR SIL function @_TToZFC4Down8Resource12getInstancesfMS0_U__FTSS6paramsGVSs10DictionarySSPSs9AnyObject__9onSuccessGSqFGSaQ__T__7onErrorGSqFT5errorCSo7NSError8responseGSqCSo17NSHTTPURLResponse__T___T_ for 'getInstances' at /path/to/file.Swift:112:5
getInstances
).J'essayais d'ajouter le framework Paypal à mon projet iOS (langage Xcode 7.2 et Objective C). Lors de la construction, aucune erreur n’a été commise, mais lorsque j’ai essayé d’archiver le projet et de réaliser l’API, j’avais cette erreur
impossible d'exécuter la commande: Erreur de segmentation: 11
Capture d'écran:
Après avoir longtemps lutté, j'ai désactivé le Bitcode dans Project's Target > Build Settings > Enable Bitcode
. Maintenant, le projet peut être archivé. S'il vous plaît vérifier la capture d'écran suivante.
Je ne peux pas vraiment donner une solution directe à ce problème (bien que je sois sûr que ce soit un bogue Apple), mais je suis tombé sur le même message d'erreur et je suis parvenu à le résoudre. Voici ce que j'ai fait:
En général
Mon exemple
Dans mon cas (j'utilisais le XMPPFramework écrit en Objective-C), le code défaillant ressemblait à ceci:
for roomMessage: XMPPRoomMessage in self.messages {
let slices = split(roomMessage.nickname(), { $0 == "_" }, allowEmptySlices: false)
}
Une fois que j'ai remplacé roomMessage.nickname()
par "0_test"
, le code n’a plus échoué. Donc, j'ai cliqué sur la méthode nickname()
(deux fois) et voici ce que j'ai vu:
J'imaginais que le compilateur Swift 1.1 rencontrait des problèmes pour déterminer quelle méthode appeler si le type exact d'un objet n'était pas clair. J'ai donc rendu le type de roomMessage
explicite et j'ai obtenu une autre erreur que j'ai corrigée en supprimant les accolades derrière l'appel de la méthode nickname()
. Ceci a fait que mon application a été construite à nouveau. Voici le code de travail:
for roomMessage: XMPPRoomMessageCoreDataStorageObject in self.messages {
let slices = split(roomMessage.nickname, { $0 == "_" }, allowEmptySlices: false)
}
J'espère que cela aidera quelqu'un à enquêter plus rapidement que moi sur la question.
J'ai aussi eu le même problème,
Xcode
, redémarrez-le et nettoyez la constructionIl devrait être corrigé maintenant.
Dans mon cas, cette erreur car j'utilise le nom de la classe pour la variable
var MYClass : MYClass {
get {
return.....
}
}
Et cela corrige mon problème
var myClass : MYClass {
get {
return.....
}
}
Mon problème était que j'ai essayé d'imiter les variables statiques avec l'approche dite du module (le modèle de conception du module). Donc, j'avais quelque chose comme ça (juste une simple référence statique à une file d'attente d'opérations déclarée au niveau d'un fichier Swift):
let globalQueue: NSOperationQueue = {
let queue = NSOperationQueue()
queue.suspended = false
queue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount
return queue
}()
Donc, cela a bien fonctionné dans Xcode 6.x.x, mais a cessé de se compiler dans Xcode 7beta. Je veux juste que vous en soyez conscient . P.S. En général, j'ai réussi à découvrir ce qui n'allait pas à partir des journaux (voir la capture d'écran ci-jointe). J'espère que cela vous fait gagner du temps.
J'ai eu une erreur de segmentation quand j'ai appelé une fonction de protocole avec la même extension de protocoles.
J'ai eu un code quelque chose dans la ligne avec ceci:
protocol Rotatable {
func rotate() -> Self
}
extension Rotatable {
func rotate(steps: Int) {
for _ 0..<steps { self.rotate() }
}
}
Lorsque, par la suite, j'ai créé un objet et déclaré qu'il suivrait le protocole Rotatable, l'erreur de segmentation 11 s'est produite et le programme s'est bloqué.
Ex: cela causerait une erreur de segmentation et un crash Xcode
struct SomeStruct : Rotatable {
}
Toutefois, si j’ai tout d’abord implémenté la fonction rotate () dans SomeStruct, puis qu’elle a ensuite déclaré qu’elle était conforme à Rotatable, aucun problème.
Je reçois cette erreur parce qu'une erreur idiote !!
dans une classe que j'ai définie
var url: String!?
:)
Il semble donc que cette description est une erreur multiple et générique pour de nombreuses raisons!
J'ai eu un semblable aujourd'hui et essayé les étapes décrites ici, y compris la suppression des fichiers que j'ai récemment modifiés. Rien ne semblait fonctionner. J'ai essayé quelque chose qui avait été suggéré quand SourceKit se planterait dans Xcode.
Je quand dans le répertoire de données dérivé et tout supprimé. L'emplacement est répertorié sous "Préférences -> Emplacements -> Données dérivées" Une icône en forme de flèche se trouve juste à côté du chemin qui ouvre le Finder avec le répertoire sélectionné. Sélectionnez tous les répertoires à l'intérieur et supprimez-les. Fermez Xcode et rouvrez-le. Cela a fait disparaître le problème pour moi.
Je pense qu'un fichier intermédiaire est corrompu et que le compilateur ne sait pas comment le gérer.
Pour moi, le problème était de mélanger Generics
, Extensions
et @objc
.
Il s'avère que Xcode n'aime pas avoir @objc
à l'intérieur des extensions de classes génériques:
class FaultyClass<T: TypeValidator>: UIControl where T.ItemType == String {
}
extension FaultyClass: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
}
}
Le code ci-dessus donne l'erreur @objc is not supported within extensions of generic classes
. J'ai donc déplacé la méthode vers la classe elle-même mais je n'ai pas supprimé l'extension vide. Cela s'est débarrassé de l'erreur mais quand j'ai compilé le projet, j'ai eu le problème de segmentation .
La solution consistait à déplacer UITextFieldDelegate
dans la déclaration de classe.
class GoodClass: <T: TypeValidator>: UIControl, UITextFieldDelegate where T.ItemType == String {
// MARK: - TextFieldDelegate
func textFieldDidEndEditing(_ textField: UITextField) {
}
}
J'ai répondu dans " Erreur de segmentation du compilateur Swift lors de la construction "
J'ai eu cette erreur aussi, et j'ai corrigé comme ceci:
vérifiez votre projet et découvrez quels fichiers utilisent deux fois et supprimez-en un ou supprimez-les tous et rajoutez-les
Erreurs dans mon xCode
: 0: erreur: nom_fichier "AttributedString.Swift" utilisé deux fois: '/Users/.../CNJOB/CNJOB/AttributedString.Swift' et '/Users/...CNJOB/CNJOB/AttributedString.Swift'
: 0: note: les noms de fichiers sont utilisés pour distinguer les déclarations privées portant le même nom
: 0: erreur: nom_fichier "APIClient.Swift" utilisé deux fois: '/Users/.../CNJOB/CNJOB/APIClient.Swift' et '/Users/...CNJOB/CNJOB/APIClient.Swift'
: 0: note: les noms de fichiers sont utilisés pour distinguer les déclarations privées portant le même nom
Commande/Applications/Xcode 3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc a échoué avec le code de sortie 1
J'ai oublié d'ajouter un @end
après le @implementation
dans un fichier .m
contenant plusieurs classes
. Quelque chose comme:
@implementation Adjust
@end
@implementation Data //@end For this class was missing
@implementation Create
@end
Pour moi, cela est dû à l'ajout des fichiers Swift à différentes cibles (extension aujourd'hui dans mon cas).
Mon problème était dans les méthodes de signatures:
func setCategory(categoryId: Int?, subcategoryId: Int?) -> FilterSettings {
func changeCategory(categoryId: Int?, subcategoryId: Int?, handler: @escaping (Int) -> ()) {
Je ne comprends pas pourquoi le compilateur ne peut pas gérer de telles déclarations.
J'ai eu ce bug à cause de la ligne
self.textView.inputAccessoryView = self.toolbarItems;
Si vous le supprimez, l'erreur disparaîtra.
Mes pas: 1)