SourceKitService Terminated


242

Sto riscontrando un problema con Xcode in cui viene visualizzato l'errore "Source Kit Service Terminated" e tutta l'evidenziazione della sintassi e il completamento del codice scompaiono in Swift. Come posso risolvere questo problema?

Ecco un'immagine di esempio:

inserisci qui la descrizione dell'immagine


1
Questo sembra essere un problema con Xcode beta. Il riavvio di Xcode ha risolto il problema per me, anche se alla riapertura del progetto l'errore si è verificato e si è interrotto.
ThomasW,

4
Ho appena iniziato ad avere questo problema ... poi ho notato un errore di sintassi nel mio file rapido. Una volta risolto il problema, l'editor ha ripreso a funzionare.
Brindy,

80
Vorrei uccidere per risolvere questo problema in questo momento ...
Babbo Natale,

2
L'errore è infatti causato da un errore di sintassi all'interno di Swift. Se si rimuove l'errore di sintassi, l'errore scompare :)
Steffen Brem,

2
Non solo non è stato risolto in 6.1, ma accade anche con gli "errori" minori che non sono nemmeno errori. Spesso puoi attivarlo mentre stai ancora digitando . L'ho fatto accadere quando sono arrivato allo "stru" in "struct". Immagino volesse davvero dirmi qualcosa prima di ottenere il "ct"!
Maury Markowitz,

Risposte:


114

La mia risposta (Xcode6-Beta7) è stata semplicemente quella di eliminare la cartella Dati derivati.

Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.

Spero che questo aiuti qualcuno. Ci sono ovviamente molte ragioni per cui questo incidente può verificarsi.


Grazie, questo è stato risolto.
Noura,

4
Sembra che ciò abbia risolto il problema, ma utilizzando anche Xcode 6.1 GM.
Flovdis,

7
questo risolto per circa 10 minuti, poi ho cambiato il nome di una variabile ed è tornato!
Hariseldon78,

1
Non una correzione permanente ma solo un miglioramento della risposta .. crea uno script di shell ed eseguilo ogni volta che succede rm -frd ~ / Library / Developer / Xcode / DerivedData / * rm -frd ~ / Library / Caches / com.apple.dt. Xcode / *
Raj

2
Non ho risolto il mio problema
Shirish Kumar il

35

Credo di aver trovato una soluzione più generica. Di seguito sono riportati i passaggi che ho usato per incoraggiare Xcode a non produrre l' SourceKitService Terminatederrore.


I sintomi che stavo avendo:

  • Quando avvierei un nuovo parco giochi, ricevo un errore per non essere in grado di comunicare con il parco giochi ( Error running playground: Failed prepare for communication with playground.Vedi questa immagine su Twitter .
  • Quando commutavo il parco giochi da OS Xa iOS, ricevevo un altro errore (sfortunatamente non l'ho scritto).
  • Quando avrei iniziato a digitare un progetto Swift basato su iOS, tentando di utilizzare il completamento del codice / intellisense su qualsiasi classe specifica UIKit, avrei ricevuto il SourceKitService Terminatedproblema in questo thread.

Processo di debug:

  • Ho iniziato cercando su Google SourceKitService, questo è diventato molto poco.
  • Ho quindi iniziato a monitorare Console.app mentre utilizzavo Xcode. Ciò ha mostrato un paio di errori:
    • IDEPlaygroundDocument: Error encountered running playground
    • com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.

Cosa ho fatto per correggere questo problema.

Se stai riscontrando un problema solo nel contesto di un progetto Swift, prova prima da solo. Se il problema persiste, prova tutti i passaggi seguenti di seguito.

  1. Apri il tuo progetto e modifica il target di distribuzione del target in qualcosa <= 7.1.

Il processo più lungo e coinvolto. (I primi 3 passaggi non sono sicuramente utili, ma li ho fatti, quindi registrali qui)

  1. Elimina completamente tutte le copie di Xcode sul tuo sistema.
  2. Riavvia il tuo computer.
  3. Reinstallare solo Xcode6-beta.
  4. Verifica di avere ancora il problema nel parco giochi e / o nei progetti.
  5. Apri iOS Simulator.
  6. Hardware -> Dispositivo -> Gestisci dispositivi
  7. Rimuovi tutti i dispositivi.
  8. Ricrea tutti i dispositivi che desideri. Ho aggiunto la versione iOS alla fine del nome, solo perché.
  9. Riavvia Xcode e il simulatore.
  10. Verificare che almeno i campi da gioco non generino più problemi quando si passa da OS Xa iOS.
  11. Apri il tuo progetto e modifica il target di distribuzione del target in qualcosa <= 7.1.

Analisi

Sembra che il problema sia che Xcode6 non è in grado di trovare e connettersi correttamente al simulatore. Non sono stato in grado di determinare perché questo è il caso, ma questo mi ha permesso di continuare a sviluppare con Swift. Questo potrebbe avere a che fare con il fatto che i binari del simulatore sembrano essersi spostati .


2
Si è verificato un problema simile: "Il runtime per il dispositivo selezionato non è installato." errore durante l'esecuzione del parco giochi per iPhonesimulator. Passaggio 5. ~ 9. risolto il problema.
orzo,

Come nota - Xcode 6 Beta 3 ha risolto completamente il problema per me. Non sono sicuro di come o perché. Speriamo che lo stesso sia vero per gli altri.
Andrew Monshizadeh,

2
Grazie per questi passaggi. Ho modificato il mio target di distribuzione da 7.0 a 7.1 e questo sembra aver risolto il problema per ora.
Nick,

L'impostazione del target di distribuzione su 7.1 ha funzionato per me, ma sto usando il framework framework insieme al target dell'app, quindi questa causa la compilazione non è riuscita, il che è davvero negativo. Ma non ho più suggerimenti sul codice, anche il colore è tornato!
Salomone,

1
Ho seguito tutti questi passaggi ma non ha funzionato per me. : - /
Rohit Goyal

32

Devi solo eliminare il "ModuleCache", questo è un tipo di cache utilizzata da Xcode per il completamento automatico.

Copia e incolla la seguente riga nel Terminale:

rm -rf ~ / Library / Developer / Xcode / DerivedData / ModuleCache


1
Questo è stato per me. Per un po 'ho potuto solo evidenziare e completare automaticamente quando avevo il dispositivo IOS selezionato nello schema attivo.
Wez,

1
Questo ha funzionato anche per me. Secondo le note di rilascio qui una parte di questo è stato risolto in Xcode 6.1.1 semi GM
Jacob Harding

Purtroppo, anni dopo, e Xcode sicuramente non è stato risolto. Usando Xcode 8.1 (8B62) e ottenendo ancora SourceKitServer si blocca ogni volta che faccio clic su un simbolo. Hanno cancellato i dati derivati, hanno rimosso ModuleCache. Xcode riavviato. Xcode reinstallato. Xcode installato su una nuova macchina. Succede la stessa cosa. Xcode è un casino pietoso.
Womble,

27

SourceKitService si arresta in modo anomalo sul mio sistema non appena digito

extension foo {

Sto usando Xcode 6 beta 6 e non importa se lo scrivo in un file vuoto o lo aggiungo a uno esistente. Non appena la sorgente contiene un extensionblocco, si bloccherà. Questo succede anche su progetti appena creati.

La mia "soluzione" è quella di evitare l'estensione nelle fonti su cui sto attualmente lavorando. Commento la fine di un blocco di classe e l'inizio del blocco di estensione. Non appena ho finito il mio lavoro in classe, li commento di nuovo:

class MyClass {

    [... my stuff ...]

//}
//
//extension MyClass {

}

Solo una nota: le estensioni non lo hanno fatto in beta 5. È una nuova "caratteristica" beta6.
Gene De Lisa,

Qualsiasi altra soluzione alternativa perché ci sono tonnellate di estensioni nel mio progetto. Non riesco a lavorare con questo Xcode ora.
Bagusflyer,

Questo così tanto questo. Ho scoperto che è quello che mi sta mordendo nei miei progetti più recenti. Presentare una segnalazione di bug ora.
Ben Kreeger,

2
Anche un grosso problema per me. Ho semplicemente spostato le estensioni nel loro file, scrivendo il codice nella classe, incollandole nell'estensione. Il modo in cui questo si è intrufolato è un po 'sconcertante.
Andrew Monshizadeh,

9

Ha iniziato a succedere nel mio progetto spritekit dopo aver inserito la funzione TocchiMoved. Questa funzione utilizza il wrapping forzato, che sembra causare il problema:

override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)

Dopo aver rimosso i punti esclamativi e quindi arrestato il riavvolgimento forzato, SourceKitService ha smesso di bloccarsi.

Spero che questo ti aiuti!


Ha funzionato per me! Grazie mille (spero che lo
sistemino

9

Ho trovato una soluzione sui forum degli sviluppatori di Apple (che richiede l'accesso, quindi lo spiegherò anche qui).

TLDR : non importare a @protocolnella tua intestazione a ponte di Objective-C in Swift che ha lo stesso nome di @interface. Ad esempio, l'SDK di Facebook ha sia un protocollo che un'interfaccia denominata "FBGraphObject".

Ecco il post del forum:

L'aggiunta dell'SDK di Facebook provoca l'arresto anomalo di SourceKitService. Se vuoi usare la beta 3 e hai bisogno dell'SDK di Facebook, una soluzione che ho trovato e che sta lavorando per me è il refactoring del @protocol FBGraphObject dell'SDK di Facebook e rinominandolo in qualcosa come @protocollo FBGraphObjectProtocol come un @interface FBGraphObject esiste e apparentemente anche SourceKit non mi piace.

Sicuramente è una soluzione temporanea solo per mantenerti funzionale e dovrai usare Cocoapods o compilare Facebook SDK da solo invece di utilizzare la libreria framework.

Per il momento, dovrai assicurarti di non avere dichiarazioni @protocol e @interface in conflitto e che includano librerie di terze parti che potresti utilizzare.

Questo mi è costato oggi, spero che sia d'aiuto!


Postato da e.parto il 10 luglio 2014


Molte grazie. Ha risolto il mio problema.
Viktor Radchenko,

Questo bug può emergere se stai usando il modello per l'immutabilità leggera di Jon Sterling ( jonmsterling.com/posts/… ), poiché consiglia protocolli che condividono un nome con la loro implementazione. Rinominare i protocolli ha risolto il problema per me senza effetti negativi.
erikprice

Questo è stato risolto per me con Facebook SDK3.17.1
KVISH,

Questo mi ha risolto! Grazie Roman
Roman

8

Utilizzare un nome diverso da Swift per il progetto. "Swift" è riservato.


10
Ricevo anche questo avviso, ma il nome del mio progetto non include affatto la parola Swift, quindi questa non è "la" soluzione, forse solo "una" soluzione. E no, non ho capito quale sia il problema con il mio.
Andrew Monshizadeh,

1
@AndrewMonshizadeh Stesso problema, nessun riferimento a Swift ma riesco a malapena a digitare un carattere o due prima di ottenere questo errore.
Bytes

1
Ulteriori indagini mi hanno portato a determinare che ricevo l'errore SourceKitService Terminated quando tento di utilizzare il completamento del codice su una sottoclasse di UIView.
Andrew Monshizadeh,

4
Questa non è la causa del problema. Non ho idea del perché questo sia votato.
Babbo Natale,

1
D: Ho avuto questo problema quando ho usato Xcode 6 beta 1 e cambiare il progetto è stata una soluzione che ha funzionato per me. Probabilmente ci sono numerosi bug che attivano questo errore. Probabilmente stai usando una versione più recente di Xcode e probabilmente hanno risolto quel bug.
Marius Fanu,

8

Ho avuto questo problema ogni pochi secondi in Xcode 6 Beta 3, ed è continuato anche in progetti completamente nuovi. Ho modificato il target di distribuzione da 8.0 a 7.1 e si è arrestato.


5

Il tuo progetto è chiamato Swift? Con la visualizzazione di quel messaggio, anche la compilazione sarebbe fallita ( <unknown>:0: error: module name "Swift" is reserved for the standard library). Prova a usare un altro nome di progetto come SwiftTest. Funzionerebbe.


3

Per risolvere questo problema potresti avere qualche strano problema con il tuo codice Swift. Ad esempio, avendo più definizioni di IBOutlet perché eri nel mezzo della copia e incolla. di solito è solo un errore di sintassi che non può essere gestito.


2
Sto riscontrando questo problema con il codice non modificato da un modello di progetto Xcode, quindi non penso che sia un problema con il codice Swift.
ThomasW,

Può essere causato da più IBOutlet con lo stesso nome.
Tony

3

Ho scoperto che digitando esplicitamente (staticamente) i tipi di variabili, anziché inferirli, ho risolto il problema per me.


3

Esci da Xcode se è aperto. Quindi dal Terminale eseguire:

defaults delete com.apple.dt.Xcode

Ciò ripristinerà Xcode alle impostazioni predefinite. Apri Xcode e tutto dovrebbe funzionare di nuovo.


2

Per me (xcode 6.1) la ragione era che avevo dimenticato di adottare la mia sottoclasse al protocollo.

Ad esempio questo è sbagliato:

protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}

e questo va bene:

protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}

Aveva lo stesso problema con il protocollo dimenticato. Grazie per il vostro consiglio. Sembra che la versione di rilascio di xcode funzioni ancora come beta =)
John Kakon,

Grazie! Sono impazzito per questo. La tua soluzione ha risolto il mio problema. Spero che questo sia risolto, sembra strano dover aggiungere protocolli su ogni sottoclasse ..
Alvin,

1

Un programma costituito solo da queste due righe (forse errato in termini di sintassi Swift) è sufficiente per causare qui l'errore "SourceKitService Terminated":

var x = 42
println("Hello", x)

L'uso di letinvece di far varsì che l'editor si comporti normalmente. Xcode versione 6.0 (6A215l)


In genere sospetto che questo errore si presenti quando Xcode non è in grado di gestire un certo errore di sintassi - nel codice effettivo o durante la creazione (nell'esempio di avere rapido nel nome del progetto)
Lyndsey Scott

Sto dicendo che il bug è probabilmente causato da un errore di sintassi e poiché il tuo codice ha un chiaro errore di sintassi, è in linea con la mia teoria.
Lyndsey Scott,

"SourceKitService Terminated" come risposta a un errore di sintassi non ha senso. Questo è l'errore che stavo sottolineando. Questo è il bug in questione.
Alexander,

Sì. Questo è il significato della parola "bug". Questo errore sembra essere attivato da errori di sintassi. Speriamo che Apple lo risolva presto.
Lyndsey Scott,

1

Ho avuto lo stesso problema oggi, il problema era println, ho appena provato il vecchio stile NSLog per stampare un valore:

// something like this
println("value = %@", valueObj)

Il modo in cui dovremmo comporre rapidamente le stringhe si è evoluto dallo stile printf allo stile inline, quindi ora incorporate i vostri valori nella stringa di formato in questo modo:

"Here goes \(YOUR_VARIABLE)"

Quindi, per l'esempio sopra la soluzione è:

println("value =\(valueObj)")

Ehi, @downwoter, cosa c'è di sbagliato in questa risposta? Mi sembra buono. So che potremmo ancora usare NSLog con Swift, ma println è il modo di fare da Swift. E questa risposta si riferisce direttamente al problema, la linea descritta si arresta in modo anomalo nel servizio SourceKit.
MANIAK_dobrii il

Ho avuto un problema simile con un println () che stava provando a stampare una tupla senza nome
questo è il

1

Ho avuto lo stesso problema con Xcode6 beta 3 per un progetto creato in beta 2.

È stato a causa di nuove modifiche sostanziali nel linguaggio rapido, ovvero sintassi della dichiarazione di array.

Verifica la presenza del codice a causa di interruzioni nella beta 3.

http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf

Uno degli esempi nel mio caso è stato:

Ho dovuto cambiare:

var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;

per

var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController

Conclusione: sembra che ci sia un errore nel codice sorgente, in alcune condizioni questo errore è prodotto da Xcode.

Soluzione fino a quando il bug non viene corretto: controllare manualmente l'errore :)

In bocca al lupo!


1

La soluzione per me è stata cambiare il simulatore. Stavo usando iPhone 5S per il mio simulatore e quando l'ho passato a iPhone 5, tutto ha funzionato perfettamente. Speriamo che una versione futura lo risolva del tutto.


Ho scoperto che il simulatore di iPhone 5 è sempre la scelta migliore, ogni altro si blocca
Daniel Galasko,

@DanielGalasko Interessante. Di solito uso l'iPhone 5S, è molto stabile per me.
Fomentia,

se stai usando Xcode 6.1, questo è stato indirizzato alla mia comprensione :)
Daniel Galasko,

Ritiro la mia affermazione che è ancora rotta e il 5 è sicuramente l'unico simulatore funzionante
Daniel Galasko,

1

Ho scoperto che la rimozione dei dati derivati ​​dal terminale risolve il problema fino al prossimo arresto anomalo. :S

Si trova in: / Utenti / {Nome utente} / Libreria / Sviluppatore / Xcode / DerivedData / {Nome progetto} - {Sequenza caratteri casuali}

Spero che aiuti.


1

Penso di aver capito uno (come probabilmente ce ne sono molti) dei motivi per cui ciò accade.

Nel mio caso, stavo importando file Objective-C tramite l'intestazione Bridging che aveva una delle seguenti vere:

  1. Il file di implementazione (.m) per l'importazione Objective-C non aveva la destinazione dell'app impostata correttamente.
  2. Il file Objective-C aveva solo un file header (.h) e NON un file di implementazione (.m). (Ancora una volta, penso che questo faccia parte del set "nessuna destinazione app appropriata", in quanto puoi impostare target solo nei file .m e non nei file .h)

Correggere i target delle app sui file Objective-C O rimuovere tutti i file importati nell'intestazione Bridging insieme sembra risolvere il problema.

Cordiali saluti - Se è necessario impostare la destinazione dei file di intestazione (.h) che non hanno file di implementazione (.m), è possibile seguire questi semplici passaggi: Impossibile modificare la visibilità dell'appartenenza alla destinazione in Xcode 4.5


1

Solo per aggiungere un'altra potenziale soluzione qui, avevo accidentalmente chiamato una classe var lo stesso nome del suo tipo:

class var Settings:Settings {
        get { return classVarWorkAround.settings }
    }

Questo causerà l'arresto anomalo di SourceKit FOR SURE. Stupido errore di sintassi, ma nel caso qualcun altro commetta lo stesso errore.

Modifica: anche secondo @Portland Runner:

Allo stesso modo, se imposti il ​​tipo restituito sul nome della funzione, otterrai l'errore.

func foo() ->foo{}

1
Allo stesso modo, se imposti il ​​tipo restituito sul nome della funzione, otterrai l'errore. func foo() ->foo{} (sentiti libero di aggiungerlo nella tua risposta)
Portland Runner

0

Quando questo errore inizia a spuntare, commenta l'ultimo / recente pezzo di codice che hai scritto e attendi qualche istante. L'evidenziazione della sintassi dovrebbe riapparire. Ecco come aggirare il problema.

    func someFunc() -> (Int?, Int?, Int?) {
     var retVal1:Int? = nil
     var retVal2:Int? = nil
     var retVal3:Int? = nil

     //some other code

     //commenting out the line below helped me
     //(retVal1, retVal2, retVal3)
     return (retVal1, retVal2, retVal3)
    }

Il sistema si riavvia da solo indipendentemente da qualsiasi cosa tu faccia. Non è necessario commentare la riga, inizierà comunque a funzionare di nuovo a breve. E anche schiantarsi, ovviamente.
Maury Markowitz,

0

Segnalato ad Apple (# 17266321):

Dettagli:

Riepilogo: Se proviamo a stampare un dizionario con valore come array, un pop-up continua a scoppiare dicendo: "SourceKit terminato. Funzionalità dell'editor temporalmente limitata". Xcode Blocca e perde il riconoscimento del contesto causando il nero del testo.

Passaggi per riprodurre: 1. Creare un array come - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"

  1. Crea un dizionario come - "var MacOSYosemiteFeatures: Dictionary = [" Device ": iOSHistoryArray]".

  2. Stampa il dizionario come - "println (" Dizionario contenente il valore dell'array:% @ \ n ", MacOSYosemiteFeatures)" (<< - Culprit - >>)

  3. Il passaggio 3 causa il commento dei problemi che rende nuovamente funzionale l'Xcode.

Risultati previsti: Xcode dovrebbe funzionare normalmente.

Risultati effettivi: Xcode diventa non funzionale, perde il riconoscimento del contesto (Tutto il carattere viene perso e tutto il testo diventa nero), l'intero Xcode diventa Inattivo.

Versione: Versione 6.0 (6A215l)


0

Provalo:

C'è un bug nel compilatore / indicizzatore Swift. Alcune linee nel tuo codice gli stanno dando difficoltà. Dovrai modificare il tuo codice con qualche altro editor di testo per commentare le righe offensive prima di poter aprire quel progetto con Xcode. Se non hai idea di quale sia il problema, commenta tutto il tuo codice. Una volta aperto il progetto, puoi iniziare a riportare il codice a poco a poco fino a quando l'aumento dell'attività della CPU ti dice che hai riscontrato il problema.


@Pang se le risposte sono correttamente valide e uguali, allora le domande sono probabilmente duplicate, quindi dovresti votare o contrassegnare per chiuderle - In questo caso è sicuramente aperto da conservare
mmmmmm

0

Problema:

  • Se si verifica un errore nel codice sorgente, è possibile che venga visualizzato il popup "SourceKitService Terminated" e l'evidenziazione del codice smette di funzionare. Può succedere o no, quando lo fa in più condizioni diverse.

Il mio caso: installato beta 3, progetto solo OSX, un file ha rilevato che l'errore "operatore a metà chiuso è stato modificato da .. a .. <". Il pop-up inizia a comparire e l'evidenziazione del codice inizia a fallire.

Soluzione:

  • Errore di correzione rilevato da Xcode
  • Passare a un diverso .swift in Navigator, tornare all'originale
  • L'evidenziazione della sintassi riappare e il pop-up "SourceKitService Terminated" scompare


0

Nel mio caso avevo importato i file mancanti nell'intestazione con ponte. Dopo aver eliminato le importazioni errate, la notifica di errore è scomparsa.


0

Ho avuto lo stesso errore con il progetto nidificato Objective-C ++ che ora include Framework con codice Swift. Per risolvere questo problema ho dovuto costruire esplicitamente il framework. Una volta che ho fatto quel problema è andato e non ritorna;)


0

Succede ancora con xcode 6 versione 6.0 (6A313)

  • Crea un nuovo progetto
  • Aggiungi un framework e una libreria
  • Seleziona il quadro touch cacao
  • Aggiungi un file Swift
  • Aggiungi una classe al file rapido

Arresti

ps: nuovissimo mac mini, nessuna precedente installazione di xcode, niente di esotico. Solo un prodotto beta, suppongo.


0

Xcode 6.1 Beta 3:

Non appena si definisce un alias di tipo non privato (ad es. typealias Foo = Int) In un file Swift e si digita la lettera cin un altro file, SourceKitService si arresta in modo anomalo.

La soluzione è dimettersi dall'uso degli alias di tipo, attendere la prossima versione beta o racchiudere gli alias di tipo nelle definizioni di classe:

public class DummyClass {
    public typealias Foo = String
}

e usalo così:

var myVar:DummyClass.Foo?

0

La modifica della destinazione di distribuzione su iOS 8.0 ha funzionato per me. So che qualcuno ha detto che lo ha spostato su <= 7.1 ha funzionato, ma questo problema sembra provenire da più fonti, quindi questa alternativa potrebbe funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.