2015-09-19 25 views
6

Ho passato molto tempo a cercare di risolvere il problema personalmente e ho già verificato le risposte disponibili su SO con lo stesso errore. Quindi ecco l'elenco delle cose che ho già escluso da possibili ragioni:Comando non riuscito a causa del segnale: Errore di segmentazione: 11 errore di compilazione

  1. Nessun problema con le strutture come indicato here. Ho creato un altro progetto con le stesse strutture stabilite e tutto va bene
  2. No issue with SwiftyJSON, funziona anche bene nel progetto di test
  3. No compilare i problemi evidenziati nel codice
  4. ho passato due diversi project.pbxproj file (dal mio originale progetto e progetto di test fresco) utilizzando strumento di confronto per trovare alcune differenze nelle impostazioni del progetto, tutti gli stessi
  5. ho anche confrontato le opzioni di comando di generazione per due progetti e tutti uguali

Quando vado al Navigator Rapporto e l ook per ogni file che non è stato compilato correttamente, ho trovato alcune strane correlazioni: qualsiasi file che utilizza alcune delle API di NSString non riesce a compilare. Per dimostrare questa ipotesi ho trovato un po 'di file che è stato compilato con successo e ha aggiunto c'è la seguente riga di codice

let abc = NSString(string: "abc") 

e quindi questo file si ferma per la compilazione troppo.

Così, per alcuni file si dice che la fusione oggetto String classe con as NSString non è valido, da qualche parte NSAttributedString/NSString creazione non riesce, in alcuni altri luoghi chiedono compare o rangeOfString era errato ecc Ma quando copio incollato tutto ciò che pezzi di codice che causato Segmentation fault errore al mio nuovo progetto fresco, hanno compilato

e, naturalmente, che il progetto è stato compilando bene usando Xcode 6 appena un giorno fa

non so dove andare da qui e come rimediare che problemi, qualsiasi aiuto sarà molto utile

UPD

ho caricato il progetto che non viene compilato al GitHub

+1

'let abc = NSString (stringa:" abc ")' compila da solo (se "Foundation" è importato). Potete fornire un codice campione minimale che mostri il problema? - In ogni caso, un errore di segmentazione del compilatore è un bug e dovrebbe essere segnalato ad Apple. –

+0

@MartinR come ho già detto, se creo un nuovo progetto, tutti i problemi elencati scompaiono, tutti compila con successo. Ciò accade solo sul mio progetto che è stato inizialmente creato in Xcode 6 – Azat

+0

@MartinR Ho pulito il mio progetto originale e caricato su [GitHub] (https://github.com/Azat92/BrokenSwift). Si prega di controllare – Azat

risposta

1

In "MYHelpers.h/.m" del progetto (presumibilmente da https://github.com/AlexandrGraschenkov/MYHelpers) una categoria NSString con un po ' metodi di utilità è definita:

#pragma mark - NSString+Utils 

@interface NSString (Utils) 
- (NSString *)trim; // trim whitespace characters with new line 
- (NSString *):(NSString *)appendString; 
- (NSURL *)toURL; 
- (NSString *)URLEncodedString; 
- (NSString *)URLDecodedString; 
- (NSString *)lightURLEncodeString; 
+ (BOOL)emailValidate:(NSString *)email; 
- (CGSize)sizeForStringWithFont:(UIFont *)font constrainedToSize:(CGSize)size; 
- (id)JSON; 
@end 

Il secondo metodo

- (NSString *):(NSString *)appendString; 

ha un nome di selezione vuoto. Ciò è consentito in Objective-C, e si può chiamare il metodo con

NSString *foobar = [@"foo" :@"bar"]; 

(non so se il metodo è stato volutamente definito con un nome selettore di vuoto - io non lo consiglio.

Ma causa il crash del compilatore Swift allo. Ciò accade solo se si fa riferimento a NSString da qualche parte nel codice Swift. (Il compilatore non dovrebbe mai bloccarsi, non importa quanto sia malformato l'input, quindi consiglio di presentare un bug report ad Apple).

è possibile rinominare il metodo per

- (NSString *)appendString:(NSString *)appendString; 

(o semplicemente rimuoverlo, se non ne hai bisogno nel progetto), che dovrebbe risolvere il problema.

+0

Questo è stato molto difficile, grazie! – Azat

+1

@ Azat: Sì, qualche detective funziona prima di chiamarlo un giorno :) –

0

Ho anche affrontato lo stesso problema nel mio progetto. See my screen shot Il mio scenario: Trova lo scenario in basso in cui ho trovato questo bug alla mia estremità. 1. Sto usando il mio codice C obiettivo nel mio progetto rapido. 2. Fondamentalmente era una classe di UIImage che stavo usando nel mio codice.

Motivo di questo errore: Per quanto sono in grado di giudicare tale compilatore è stato confuso con un po 'di codice e non è stato in grado di mostrare la ragione esatta. Così è stato gettando questo messaggio qui sotto:

Comando non riuscito a causa del segnale: Segmentation fault: 11

La mia soluzione: Ho appena importato #import <UIKit/UIKit.h> nel mio file di intestazione di categoria e il mio errore ha stato risolto all'istante.

Felice di aiutarti !!