Dies ist KEIN Beta-Problem. Ich bin auf Xcode 6.0.1, Produktionsversion. Das Problem, das ich habe, ist, dass Xcode beim Erstellen oder Ausführen des Codes, an dem ich arbeite, für längere Zeit nicht mehr reagiert und der SourceKitService mehr als 400% der CPU verbraucht (laut Aktivitätsmonitor). Dieses Problem ist seit einigen Tagen neu, obwohl ich seltsamerweise seit der offiziellen Veröffentlichung am 17. September auf Xcode 6.0 war. Ich habe auf 6.0.1 aktualisiert und gehofft, dass es eine Lösung für dieses Problem enthält.
Irgendeine Idee, was das Problem sein könnte?
Antworten:
Ich bin heute Nachmittag auf dieses Problem mit Xcode 6.1.1 gestoßen (keine Beta, offizielle veröffentlichte Version). Ich hatte auf dem Spielplatz Code ausgeführt und vermutete, dass dies die Ursache war. Die CPU war zu fast 100% gebunden, und Xcode konnte keine Builds abschließen.
Also hier ist was ich getan habe:
1. Öffnen Sie "Activity Monitor", in dem SourceKitService als Haupt-CPU-Schwein angezeigt wird.
2. Doppelklicken Sie in "Activity Monitor" auf den SourceKitService und dann auf "Open Files and Ports" (Dateien und Ports öffnen), um anzuzeigen, dass er für Dateien im Verzeichnis / Users / myname / Library / Developer / Xcode / DerivedData / ModuleCache / funktioniert für einen bestimmten Ordner.
3. Löschen Sie den angegebenen Ordner (über eine Befehlszeile mit rm -rf). Der Cache wird basierend auf neu generiert. Kann ich den Inhalt des Xcode Derived-Datenordners sicher löschen?.
4. Verwenden Sie Activity Monitor erneut, und beenden Sie SourceKitServer. Ich sah das allzu vertraute Schild in Xcode, das besagte, dass SourceKitService abgestürzt war (deshalb kam mir SourceKitService bekannt vor!).
5. Wiederholen Sie Schritt 3.
Der Mac ist wieder friedlich. Es gingen keine Daten verloren und Xcode musste nicht einmal neu gestartet werden (was ich erfolglos versucht hatte). Fazit ist, dass ModuleCache SourceKitService in eine Schleife zu bekommen scheint und das Löschen des Ordners es zu beheben scheint. Hoffe das funktioniert auch bei dir.
Bootnote:
Die Ursache für das SourceKitService-Problem war übrigens, dass ich in meiner Swift-Klasse eine zu lange Array-Deklaration hatte. Ich hatte über 200 Einträge in einem Array. Reduzierte es auf 30 und der Fehler ging weg. Das Problem ist möglicherweise auf einen Stapelüberlauf im Apple-Code zurückzuführen (Wortspiel beabsichtigt).
quelle
Ich habe das Problem gesehen, weil ich ein Array mit ungefähr 60 Elementen deklariert habe, das so aussah:
Indem Sie den Typ explizit wie folgt kommentieren:
Ich konnte es zum Stillstand bringen. Ich denke, es muss etwas mit Swifts Typinferenz und Typprüfung zu tun haben, die dazu führt, dass es in eine Schleife gerät, wenn es auf ein längeres Array stößt.
Dies war in Xcode 6.2. Ich habe auch den ModuleCache wie oben beschrieben gelöscht und jetzt ist alles gut.
quelle
return ["a", "b", "c", "d", "e", "f"]
eine Funktion hätten, die zurückgibt[String]
, würde es immer noch Probleme mit der Typinferenz geben?Dieses Problem trat 10 Mal auf, 8 Mal, wenn ich ein tatsächliches Gerät angeschlossen und den Simulator nicht durchlaufen habe.
Ich bin mir nicht sicher, ob meine Lösung gut ist, aber ich glaube, das Problem war auf den Wechsel zwischen Simulator und einem tatsächlichen Gerät zurückzuführen. Es mag seltsam klingen, aber es war, als würde es Interferenzen zwischen Cache-Dateien verursachen .
Was hat mein Problem gelöst:
Alt + Shift + Command + K
Command + Shift + K
.Bevor Sie also versuchen, auf einem neuen Gerät ausgeführt zu werden, löschen Sie einfach den Cache.
BEARBEITEN
Ich hatte gerade das Problem ohne Geräteverbindung. Ich habe Xcode einfach beendet und wieder geöffnet und das Problem war behoben. Nicht sicher , meine Vermutung ist es könnte einige Neuindexierung Problem sein , nachdem Sie holen / Pull Merge neuen Code.
quelle
Ich habe ein anderes Problem behoben, das dazu führte, dass SourceKitService bis zu 13 GB Arbeitsspeicher verwendete ...
Ich hatte String (Formatzeile mit vielen Argumenten:
wenn es durch dieses ersetzt wurde, funktionierte es einwandfrei (kein Speicheraufbau und normaler CPU-Verbrauch)
quelle
Ich bin mit Xcode 9 auf dieses Problem gestoßen und habe verschiedene Lösungen untersucht. Für mich schien das Deaktivieren der Quellcodeverwaltung den Trick zu tun.
Xcode -> Preferences -> Source Control -> uncheck "Enable Source Control"
Wenn dies nicht funktioniert, würde ich empfehlen, den Befehl renice am Terminal zu verwenden . Mehr dazu hier
Deaktivieren der Quellcodeverwaltung
Andere Schritte, die ich versucht habe, aber nicht geholfen habe:
quelle
Bei mir hat es funktioniert, die abgeleiteten Daten zu löschen. Wählen Sie 'Produkt' aus dem Menü und halten Sie die Alt-Taste gedrückt und wählen Sie 'Clean Build Folder'. Kurztaste: Alt + Umschalt + Befehl + K.
quelle
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/*
Beachten Sie den Unterschied zwischen der von LNI akzeptierten Antwort und dieser:
quelle
Ich verbringe 4 Stunden damit, Probleme in einer langen Zusammenstellung meines Projekts herauszufinden. Der erste Versuch dauert 42 Minuten, um zu kompilieren.
/Users/myname/Library/Developer/Xcode/DerivedData/ModuleCache/
Nach dem Neustart lösche ich den gesamten Cache von @LNISourceKitService
und wende einige Änderungen für den Code an:1 zu
Von
2) Zu
Von
3)
Zu
Von
Als Ergebnis Kompilierungszeit - 3 min, nicht so schnell, aber besser für 42 min.
Als Ergebnis
SourceKitService
nehmen Sie vor - ~ 5,2 GB Speicher und nach ~ 0,37 GB Speicherquelle
Ich hatte das gleiche Problem mit SourceKitService.
I löste. NIEMALS SUBVIEWS MIT FOR LOOP HINZUFÜGEN.
Um ein Problem zu erkennen, verwende ich: https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode
quelle
Erstellen Sie kein schnelles Wörterbuch ohne Angabe von Datentypen oder mit [String: Any]
Wenn wir den Typ 'Any' verwenden, stößt der Compiler möglicherweise auf eine Endlosschleife, um den Datentyp zu überprüfen.
Es wird kein Kompilierungsfehler erstellt, und unser Mac friert beim Kompilieren schneller Quelldateien ein, wenn er viel Speicher für die Aufgaben "swift" und "SourceKitService" erhält.
quelle
Ich habe mich einem solchen Problem gestellt. Der Source Kit-Service verwendete 10 GB. Der schnelle Prozess im Aktivitätsmonitor erreicht eine Auslastung von über 6 GB. Ich habe folgenden Code verwendet:
var details: [String: Any] = ["1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "10": 10, "11": 11, "12": 12, "13": 13, "14": 14, "15": 15, "16": 16]
Ich habe den Code wie folgt geändert, um dieses Problem zu beheben:
var details: [String: Any] = [:]
Details ["1"] = 1
Details ["2"] = 2
Details ["3"] = 3
Details ["4"] = 4
Details ["5"] = 5
Details ["6"] = 6
Details ["7"] = 7
Details ["8"] = 8
Details ["9"] = 9
Details ["10"] = 10
Details ["11"] = 11
Details ["12"] = 12
Details ["13"] = 13
Details ["14"] = 14
Details ["15"] = 15
Details ["16"] = 16
quelle
Das Problem tritt weiterhin in XCode 10.0 auf. Sie können das Problem beheben, indem Sie "Quellcodeverwaltungsänderungen anzeigen" in den Quellcodeverwaltungsoptionen deaktivieren.
quelle
Konfrontiert das gleiche Problem auf
Xcode 7.2 (7C68)
Die Lösung bestand darin, eine Methode eines Protokolls zu implementieren, die meine Klasse in der Definition hatte.
quelle
Dies ist immer noch ein Problem in xcode Version 7.3.1 (7D1014). Die Ursache für mich war, wie LNI betonte, ein zu langes Array, eigentlich nicht so lang. Ich habe mein Problem behoben, indem ich das Array in verschiedene Arrays wie folgt aufgeteilt habe:
quelle
Ich hatte das gleiche Problem mit XCode 8.2.1 (8C1002) und dem folgenden Code:
und diese Erweiterungen:
Ich habe es gelöst, indem ich diese Zeile in TestViewController kommentiert habe:
Ich habe mehr als eine Stunde gebraucht, um es zu finden. Ich hoffe, ich kann jemand anderem Zeit sparen. Ich habe einen Fehlerbericht bei Apple mit der Nummer 30103533 eingereicht
quelle
Ich hatte das gleiche Problem, nachdem ich das Projekt auf Swift 3 migriert hatte. Finden Sie heraus, dass die Lösung aufgrund von Wörterbüchern und Arrays, die ohne Datentyp erstellt wurden, einige Zeit in Anspruch nahm.
quelle
Dieses Verhalten trat in meinem Projekt auf, als ich versehentlich eine Klasse deklarierte, die von sich selbst geerbt hatte. Xcode 8.2.1 mit Swift 3.
quelle
Ich hatte auch dieses Problem, in meinem Fall habe ich ein großes Array wie dieses deklariert:
Ich habe das Problem gelöst, indem ich die Elemente 1 pro Zeile anstelle aller gleichzeitig hinzugefügt habe:
Dies hat das Problem behoben.
quelle
Für Objective-C-Projekte:
Ich hatte das gleiche Problem und es gibt keinen Swift-Code in unserem Projekt, also war es nicht die Typinferenzprüfung.
Ich habe hier jede andere Lösung ausprobiert und nichts hat funktioniert - was ich ENDLICH behoben habe, war, den Computer im Wiederherstellungsmodus neu zu starten und die Festplattenreparatur auszuführen. Ich kann endlich wieder in Frieden arbeiten!
Ich vermute, dass es aufgrund einiger defekter Symlinks passiert ist, die wahrscheinlich aufeinander zeigen und den Dienst in einer Endlosschleife herumlaufen lassen.
quelle
Ich habe ein ähnliches Problem mit Xcode 8.2.1 - mit einem Abschnitt von mehr als 1.000 Codezeilen, die über / * * / auskommentiert wurden. Das Auskommentieren des Abschnitts verursachte das Problem, und das Entfernen des auskommentierten Codes behebt es.
quelle
Ich bin auf etwas Ähnliches gestoßen, das mehrere kombiniert? Operatoren, um einen Standardwert für optionale Zeichenfolgenwerte anzugeben.
Ich habe mit dem folgenden Debug-Code experimentiert, als der Lüfter meines vertrauenswürdigen MacBook Pro Mitte 2010 anfing, hart zu laufen. SourceKitService saugte jeden CPU-Zyklus auf, den es bekommen konnte. Das Kommentieren und Kommentieren der beleidigenden Zeile machte sehr deutlich, woran SourceKitService erstickte. Es sieht aus wie mit mehr als einem? Der Bediener, der einen Standardwert angibt, ist ein Problem auf einem alten Computer. Die Arbeit ist einfach nicht zu tun. Teilen Sie es in mehrere Zuweisungen auf, wodurch hässlicher Debug-Code noch hässlicher wird.
placeMark ist eine Instanz von CLPlacemark. Die hier verwendeten Eigenschaften geben optionale Zeichenfolgen zurück.
Ich habe Xcode Version 8.3.2 (8E2002) unter OS 10.12.4 (16E195) verwendet.
quelle
"\() \()"
stattdessen , es mit (String-Interpolation) zu versuchenDas Konvertieren langer Arrays in Funktionen scheint das Problem für mich zu lösen:
zu:
quelle
im Terminal ausführen:
Mit diesem Alias können Sie auch einen Terminalbefehl erstellen:
und dann einfach rennen
quelle
https://www.logcg.com/de/archives/2209.html
SourceKitService übernahm die Inferenzarbeit von Swift.
zum expliziten Typ ändern
Die CPU-Auslastung von SourceKitService fällt sofort ab。
quelle
Ist mir unter XCode 11.4.1 passiert, als ich @dynamicMemberLookup-Indizes in einem SwiftUI @ ViewBuilder-Block aufgerufen habe.
quelle
Ich hatte das gleiche Problem und es wurde durch einen Programmierfehler verursacht.
In meinem Fall implementierte ich die vergleichbaren und gleichwertigen Protokolle und die lhs.param und rhs.param stimmten nicht mit den Parametern der Klassen lhs und rhs überein.
quelle