Este NO es un problema Beta. Estoy en Xcode 6.0.1, versión de producción. El problema que tengo es que cuando intento hacer una compilación o ejecutar el código en el que estoy trabajando, Xcode deja de responder durante largos períodos de tiempo y SourceKitService consume más del 400% de la CPU (según Activity Monitor). Este problema es nuevo en los últimos días, aunque, curiosamente, había estado en Xcode 6.0 desde que se lanzó oficialmente el 17 de septiembre. Actualicé a 6.0.1 con la esperanza de que contuviera una solución para este problema.
¿Alguna idea de cuál podría ser el problema?
Respuestas:
Me encontré con este problema con Xcode 6.1.1 a principios de esta tarde (no beta, versión oficial). Había estado ejecutando un código en Playground y sospechaba que esa era la causa. La CPU estaba vinculada a casi el 100% y Xcode no pudo completar las compilaciones.
Así que esto es lo que hice:
1. Se abrió el "Monitor de actividad", que mostraba a SourceKitService como el principal consumidor de CPU.
2. Dentro de "Activity Monitor", haga doble clic en SourceKitService y haga clic en la sección "Abrir archivos y puertos", que mostró que estaba trabajando en archivos en el directorio / Users / myname / Library / Developer / Xcode / DerivedData / ModuleCache / para una carpeta específica.
3. Eliminó la carpeta especificada (desde una línea de comandos, usando rm -rf). La caché se regenera en función de ¿Puedo eliminar de forma segura el contenido de la carpeta de datos derivados de Xcode? .
4. Usando Activity Monitor de nuevo, fuerce el cierre de SourceKitServer. Vi el letrero ahora demasiado familiar dentro de Xcode que decía que SourceKitService se había bloqueado (¡por eso SourceKitService me sonaba familiar!).
5. Paso 3 repetido.
La Mac vuelve a estar en paz. No se perdieron datos y Xcode ni siquiera tuvo que reiniciarse (lo que intenté sin éxito). La conclusión es que ModuleCache parece estar obteniendo SourceKitService en un bucle y eliminar la carpeta parece solucionarlo. Espero que esto funcione para usted también.
Nota de arranque:
Por cierto, la causa del problema SourceKitService fue que tenía una declaración de matriz demasiado larga en mi clase Swift. Tenía más de 200 entradas en una matriz. Lo redujo a 30 y el error desapareció. Por lo tanto, el problema puede haber surgido debido a algún tipo de desbordamiento de pila en el código de Apple (juego de palabras).
fuente
Estaba viendo el problema porque estaba declarando una matriz con aproximadamente 60 elementos que se veían así:
Anotando explícitamente el tipo de esta manera:
Pude hacer que se detuviera. Creo que debe tener algo que ver con la inferencia de tipo y la verificación de tipo de Swift que lo hace entrar en un bucle cuando encuentra una matriz más larga.
Esto fue en Xcode 6.2. También eliminé ModuleCache como se describió anteriormente y ahora todo está bien.
fuente
return ["a", "b", "c", "d", "e", "f"]
en una función que devuelve[String]
, todavía tendría problemas con la inferencia de tipo?Este problema sucedió como 10 veces, 8 veces sucedió cuando conecté un dispositivo real y no ejecuté el simulador.
No estoy tan seguro de si mi solución es buena, pero creo que el problema se debió al cambio entre el simulador y un dispositivo real. Puede sonar extraño, pero era como si estuviera creando interferencias entre los archivos de caché .
Qué resolvió mi problema:
Alt + Shift + Command + K
Command + Shift + K
.Entonces, básicamente, antes de intentar ejecutar en cualquier dispositivo nuevo, simplemente elimine cualquier caché.
EDITAR
Acabo de tener el problema sin ninguna conexión de dispositivo. Salí de Xcode, lo abrí de nuevo y el problema desapareció. No estoy seguro de mi suposición es que podría ser un problema de reindexación después de buscar / extraer el código nuevo.
fuente
Resolví otro problema que causaba que SourceKitService usara hasta 13 GB de memoria ...
Tenía String (línea de formato con muchos argumentos:
cuando se reemplazó con esto funcionó bien (sin acumulación de memoria y consumo normal de CPU)
fuente
Me he encontrado con este problema con Xcode 9 y exploré varias soluciones. Para mí, deshabilitar el control de fuente parecía funcionar.
Xcode -> Preferences -> Source Control -> uncheck "Enable Source Control"
Si esto no funciona, recomendaría usar el comando renice en la terminal . Más sobre eso aquí
deshabilitar el control de fuente
Otros pasos que intenté, pero no ayudaron:
fuente
Para mí funcionó para eliminar los datos derivados. Seleccione 'Producto' en el menú y mantenga presionada la tecla Alt y seleccione 'Limpiar carpeta de compilación'. Tecla corta: Alt + Mayús + Comando + K
fuente
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/*
Tenga en cuenta la diferencia entre la respuesta aceptada de LNI y esta:
fuente
Dedico 4 horas a resolver problemas en una larga compilación de mi proyecto. El primer intento tarda 42 minutos en compilarse.
/Users/myname/Library/Developer/Xcode/DerivedData/ModuleCache/
Borro todo el caché como sugirió @LNI, después de reiniciarSourceKitService
y aplico algunos cambios para el código:1 a
De
2) Para
De
3)
A
De
Como resultado, tiempo de compilación: 3 minutos, no tan rápido pero mejor durante 42 minutos.
Como resultado, antes
SourceKitService
- toma ~ 5,2Gb de memoria y después ~ 0.37Gbfuente
Tuve el mismo problema con SourceKitService.
Lo resolví. NUNCA AGREGUE SUBVIEWS CON FOR LOOP.
Para detectar el problema, uso: https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode
fuente
No cree un diccionario rápido sin especificar los tipos de datos o con [String: Any]
Si usamos el tipo 'Cualquiera', el compilador podría ejecutar un bucle infinito para verificar el tipo de datos.
No creará ningún error de compilación, hará que nuestra Mac se congele en 'compilar archivos de origen rápidos' con la adquisición de mucha memoria para las tareas llamadas 'swift' y 'SourceKitService'.
fuente
Me he enfrentado a tal problema. El servicio del kit de origen estaba utilizando 10 GB de uso. El proceso rápido en el monitor de actividad alcanza un uso de más de 6 GB. Estaba usando el siguiente código:
var detalles: [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]
He cambiado el código al siguiente para resolver este problema:
var detalles: [String: Any] = [:]
detalles ["1"] = 1
detalles ["2"] = 2
detalles ["3"] = 3
detalles ["4"] = 4
detalles ["5"] = 5
detalles ["6"] = 6
detalles ["7"] = 7
detalles ["8"] = 8
detalles ["9"] = 9
detalles ["10"] = 10
detalles ["11"] = 11
detalles ["12"] = 12
detalles ["13"] = 13
detalles ["14"] = 14
detalles ["15"] = 15
detalles ["16"] = 16
fuente
El problema aún ocurre en XCode 10.0. Puede solucionarlo desactivando "Mostrar cambios de control de fuente" en las opciones de control de fuente.
fuente
Enfrentó el mismo problema en
Xcode 7.2 (7C68)
La solución fue implementar un método de protocolo, que mi clase tenía en la definición.
fuente
Esto sigue siendo un problema en la versión 7.3.1 de xcode (7D1014), la causa para mí fue, como lo señaló LNI, una matriz demasiado larga, no tan larga en realidad. Solucioné mi problema dividiendo la matriz en varias matrices como esta:
fuente
Tuve el mismo problema con XCode 8.2.1 (8C1002) y el siguiente código:
y estas extensiones:
Lo resolví comentando esta línea en TestViewController:
Me tomó más de una hora encontrarlo, espero que pueda salvar algo de tiempo a alguien más. Presenté un informe de error a Apple con el número 30103533
fuente
Me enfrenté al mismo problema después de migrar el proyecto a swift 3, descubrí la solución que estaba tomando tiempo debido a los diccionarios y la matriz creados sin el tipo de datos.
fuente
Este comportamiento apareció en mi proyecto cuando declaré accidentalmente una clase que heredó de sí misma. Xcode 8.2.1, usando Swift 3.
fuente
También tuve este problema, en mi caso, estaba declarando una gran matriz como esta:
Resolví el problema agregando los elementos 1 por línea en lugar de todos al mismo tiempo:
esto solucionó el problema.
fuente
Para proyectos Objective-C:
Tuve el mismo problema y no hay ningún código Swift en nuestro proyecto, por lo que no era el verificador de inferencia de tipos.
Probé todas las demás soluciones aquí y nada funcionó; lo que FINALMENTE lo solucionó fue reiniciar la computadora en modo de recuperación y ejecutar la reparación del disco. ¡Por fin puedo volver a trabajar en paz!
Supongo que sucedió debido a algunos enlaces simbólicos rotos, probablemente apuntando uno hacia el otro y haciendo que el servicio funcione en un bucle sin fin.
fuente
Tengo un problema similar con Xcode 8.2.1, con una sección de más de 1,000 líneas de código comentadas a través de / * * /. Comentar la sección causó el problema y eliminar el código comentado lo solucionó.
fuente
Me encontré con algo similar combinando múltiples? operadores para proporcionar un valor predeterminado para valores de cadena opcionales.
Estaba experimentando con el siguiente código de depuración cuando el ventilador de mi confiable MacBook Pro de mediados de 2010 comenzó a funcionar con fuerza. SourceKitService estaba absorbiendo cada ciclo de CPU que podía obtener. Comentar y descomentar la línea ofensiva dejó muy claro en qué se estaba ahogando SourceKitService. ¿Parece usar más de uno? que el operador proporcione un valor predeterminado es un problema en una máquina vieja. La solución es simplemente no hacerlo. Divídalo en múltiples asignaciones, lo que hace que un código de depuración desagradable sea aún más desagradable.
placeMark es una instancia de CLPlacemark. Las propiedades utilizadas aquí devuelven cadenas opcionales.
Estaba usando Xcode versión 8.3.2 (8E2002) ejecutándose en OS 10.12.4 (16E195)
fuente
"\() \()"
(interpolación de cadenas)La conversión de matrices largas en funciones parece resolver el problema para mí:
a:
fuente
ejecutar en terminal:
también puede crear un comando de terminal usando este alias:
y luego solo corre
fuente
https://www.logcg.com/en/archives/2209.html
SourceKitService se hizo cargo del trabajo de inferencia de tipos de Swift.
cambiar para escribir explícitamente
El uso de la CPU de SourceKitService se despliega inmediatamente。
fuente
Me pasó en XCode 11.4.1 al llamar a los subíndices @dynamicMemberLookup dentro de un bloque SwiftUI @ViewBuilder.
fuente
Tuve el mismo problema y fue causado por un error de programación.
En mi caso, estaba implementando los protocolos comparables y equiparables y lhs.param y rhs.param no se correspondían con los parámetros de las clases lhs y rhs.
fuente