SourceKitService terminé


242

J'ai un problème avec Xcode où l'erreur "Source Kit Service Terminated" apparaît et toute la coloration syntaxique et l'achèvement du code ont disparu dans Swift. Comment puis-je réparer cela?

Voici un exemple d'image:

entrez la description de l'image ici


1
Cela semble être un problème avec Xcode beta. Le redémarrage de Xcode a résolu le problème pour moi, bien qu'à la réouverture du projet, l'erreur s'est produite puis s'est arrêtée.
ThomasW

4
Je viens de commencer à avoir ce problème ... puis j'ai repéré une erreur de syntaxe dans mon fichier swift. Une fois que j'ai corrigé cela, l'éditeur a recommencé à travailler.
brindy

80
Je tuerais pour que cela soit corrigé en ce moment ...
Père Noël

2
L'erreur est en effet causée par une erreur de syntaxe à l'intérieur de Swift. Si vous supprimez l'erreur de syntaxe, l'erreur disparaîtra :)
Steffen Brem

2
Non seulement cela n'est pas résolu en 6.1, mais cela arrive même avec les "erreurs" les plus mineures qui ne sont même pas des erreurs. Vous pouvez souvent le déclencher tout en tapant . Je l'ai fait arriver quand j'ai atteint le "stru" dans "struct". Je suppose qu'il voulait vraiment me dire quelque chose avant d'obtenir le "ct"!
Maury Markowitz

Réponses:


114

La réponse à la mienne (Xcode6-Beta7) était simplement de supprimer le dossier Derived Data.

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

J'espère que cela aide quelqu'un. Il y a évidemment de nombreuses raisons pour lesquelles ce crash peut se produire.


Merci, cela l'a corrigé.
Noura

4
Il semble que cela ait résolu le problème, mais aussi en utilisant Xcode 6.1 GM.
Flovdis

7
cela l'a corrigé pendant environ 10 minutes, puis j'ai changé le nom d'une variable et c'est de retour!
hariseldon78 du

1
Pas un correctif permanent mais juste une amélioration de la réponse .. créez un script shell et exécutez-le chaque fois que cela se produit rm -frd ~ / Library / Developer / Xcode / DerivedData / * rm -frd ~ / Library / Caches / com.apple.dt. Xcode / *
Raj

2
N'a pas résolu mon problème
Shirish Kumar

35

Je pense que j'ai peut-être trouvé une solution plus générale. Voici les étapes que j'ai utilisées pour encourager Xcode à ne pas produire l' SourceKitService Terminatederreur.


Les symptômes que je ressentais:

  • Lorsque je démarrais un nouveau terrain de jeu, je recevais une erreur de ne pas pouvoir communiquer avec le terrain de jeu ( Error running playground: Failed prepare for communication with playground.voir cette image sur Twitter .
  • Lorsque je basculais le terrain de jeu de OS Xà iOS, je recevais une autre erreur (malheureusement, je ne l'ai pas notée).
  • Lorsque je commençais à taper dans un projet Swift basé sur iOS, en essayant d'utiliser l'achèvement de code / intellisense sur n'importe quelle classe spécifique UIKit, je recevais le SourceKitService Terminatedproblème dans ce fil.

Processus de débogage:

  • J'ai commencé par parcourir Google pour SourceKitService, cela a été très peu.
  • J'ai ensuite commencé à surveiller Console.app en utilisant Xcode. Cela a montré quelques erreurs:
    • IDEPlaygroundDocument: Error encountered running playground
    • com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.

Ce que j'ai fait pour corriger ce problème.

Si vous ne rencontrez un problème que dans le contexte d'un projet Swift, essayez d'abord cela seul. Si cela ne fonctionne pas, essayez toutes les étapes ci-dessous.

  1. Ouvrez votre projet et changez la cible de déploiement de la cible en quelque chose <= 7.1.

Le processus le plus long et le plus complexe. (Les 3 premières étapes ne sont certainement pas utiles, mais je les ai faites, donc enregistrez-les ici)

  1. Supprimez complètement toutes les copies de Xcode sur votre système.
  2. Redémarrez votre ordinateur.
  3. Réinstallez Xcode6-beta uniquement.
  4. Vérifiez que le problème persiste dans les aires de jeux et / ou les projets.
  5. Ouvrez le simulateur iOS.
  6. Matériel -> Périphérique -> Gérer les périphériques
  7. Retirez tous les appareils.
  8. Recréez tous les appareils que vous souhaitez. J'ai ajouté la version iOS à la fin du nom, juste parce que.
  9. Redémarrez Xcode et le simulateur.
  10. Vérifiez qu'au moins les aires de jeux ne génèrent plus de problèmes lorsque vous passez de OS Xà iOS.
  11. Ouvrez votre projet et changez la cible de déploiement de la cible en quelque chose <= 7.1.

Une analyse

Il semble que le problème soit que Xcode6 ne soit pas en mesure de trouver et de se connecter correctement au simulateur. Je n'ai pas pu déterminer pourquoi c'est le cas, mais cela m'a permis de continuer à développer avec Swift. Cela peut être dû au fait que les binaires du simulateur semblent avoir bougé .


2
Eu un problème similaire: "Le runtime pour le périphérique sélectionné n'est pas installé." erreur lors de l'exécution de l'aire de jeux pour iPhonesimulator. Étape 5. ~ 9. résolu le problème.
orge

Remarque: Xcode 6 Beta 3 a complètement résolu le problème pour moi. Je ne sais pas comment ni pourquoi. Espérons que la même chose soit vraie pour les autres.
Andrew Monshizadeh

2
Merci pour ces étapes. J'ai ajusté ma cible de déploiement de 7.0 à 7.1 et cela semble avoir résolu le problème pour l'instant.
Nick

La définition de la cible de déploiement sur 7.1 a fonctionné pour moi, mais j'utilise la cible du framework avec la cible de l'application, donc la cause de la compilation a échoué, ce qui est vraiment mauvais. Mais je n'ai plus de suggestion de code, même la couleur est de retour!
Solomon

1
J'ai suivi toutes ces étapes mais cela n'a pas fonctionné pour moi. : - /
Rohit Goyal

32

Vous avez juste besoin de supprimer le "ModuleCache", c'est une sorte de cache utilisé par Xcode pour l'autocomplétion.

Copiez et collez la ligne suivante dans le terminal:

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


1
Cela l'a fait pour moi. Pendant un certain temps, je ne pouvais obtenir la mise en évidence et la saisie semi-automatique que lorsque le périphérique IOS était sélectionné dans le schéma actif.
Wez

1
Cela a également fonctionné pour moi. Selon les notes de version ici une partie de cette est fixée dans Xcode 6.1.1 semences génétiquement modifiées
Jacob Harding

Hélas, des années plus tard, et Xcode n'est certainement pas corrigé. Utiliser Xcode 8.1 (8B62) et toujours obtenir SourceKitServer se bloque chaque fois que je clique sur un symbole. Ont effacé les données dérivées, ont supprimé le ModuleCache. Xcode redémarré. Xcode réinstallé. Xcode installé sur une nouvelle machine. La même chose se produit. Xcode est un gâchis pitoyable.
Womble

27

SourceKitService se bloque sur mon système dès que je tape

extension foo {

J'utilise Xcode 6 beta 6 et ce n'est pas grave si je le tape dans un fichier vide ou l'ajoute à un fichier existant. Dès que la source contient un extensionbloc, il se bloque. Cela se produit même sur les projets nouvellement créés.

Ma "solution" est d'éviter l'extension dans les sources sur lesquelles je travaille actuellement. Je commente la fin d'un bloc de classe et le début du bloc d'extension. Dès que j'ai fini mon travail sur la classe, je les commente à nouveau:

class MyClass {

    [... my stuff ...]

//}
//
//extension MyClass {

}

Juste une note - les extensions ne l'ont pas fait dans la bêta 5. C'est une nouvelle "fonctionnalité" bêta6.
Gene De Lisa

Toute autre solution de contournement car il y a des tonnes d'extensions dans mon projet. Impossible de travailler avec ce Xcode maintenant.
Bagusflyer

Ce ceci ceci tellement ceci. J'ai découvert que c'est ce qui me mord dans mes projets les plus récents. Dépôt d'un rapport de bogue maintenant.
Ben Kreeger

2
C'est aussi un énorme problème pour moi. Je me suis contenté de déplacer les extensions dans leur propre fichier, d'écrire le code dans la classe, de les copier-coller dans l'extension. Comment cette traversée est un peu déroutante.
Andrew Monshizadeh

9

Cela a commencé à se produire sur mon projet spritekit après avoir inséré la fonction touchesMoved. Cette fonction utilise le déballage forcé, ce qui semble causer le problème:

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

Après avoir supprimé les points d'exclamation et ainsi arrêté le déballage forcé, le SourceKitService a cessé de planter.

J'espère que cela t'aides!


A travaillé pour moi! Merci beaucoup (j'espère qu'ils vont le réparer!)
napolux

9

J'ai trouvé une solution sur les forums des développeurs d'Apple (qui nécessite une connexion, je vais donc l'expliquer ici aussi).

TLDR : n'importez pas un @protocoldans votre en-tête de pontage Objective-C vers Swift qui porte le même nom qu'un @interface. Par exemple, le SDK Facebook a à la fois un protocole et une interface nommée "FBGraphObject".

Voici le message du forum:

L'ajout du SDK Facebook provoque le blocage de SourceKitService. Si vous souhaitez utiliser la version bêta 3 et que vous avez besoin du SDK Facebook, une solution que j'ai trouvée et qui fonctionne pour moi est de refactoriser le @protocol FBGraphObject du SDK Facebook et de le renommer en quelque chose comme @protocol FBGraphObjectProtocol en tant qu'interface FBGraphObject @interface existe également et apparemment SourceKit n'aime pas ça.

C'est certainement une solution temporaire juste pour vous garder fonctionnel et vous devrez utiliser Cocoapods ou autrement créer le SDK Facebook vous-même plutôt que d'utiliser la bibliothèque de framework.

Pour le moment, vous devrez vous assurer que vous n'avez pas de déclarations @protocol et @interface en conflit et que cela inclut les bibliothèques tierces que vous utilisez.

Cela m'a coûté aujourd'hui, j'espère que ça aide!


Publié par e.parto le 10 juillet 2014


Merci beaucoup. Cela a résolu mon problème.
Viktor Radchenko

Ce bogue peut apparaître si vous utilisez Pattern for Lightweight Immutability de Jon Sterling ( jonmsterling.com/posts/… ), car il conseille les protocoles qui partagent un nom avec leur implémentation. Renommer les protocoles a résolu le problème pour moi sans aucun effet néfaste.
erikprice

Cela a été résolu pour moi avec le SDK Facebook3.17.1
KVISH

Cela l'a corrigé pour moi! Merci Roman
Roman

8

Utilisez un autre nom que Swift pour le projet. "Swift" est réservé.


10
Je reçois également cet avertissement, mais le nom de mon projet n'inclut pas du tout le mot Swift, donc ce n'est pas "la" solution, juste peut-être "une" solution. Et non, je n'ai pas compris quel est le problème avec le mien.
Andrew Monshizadeh

1
@AndrewMonshizadeh Même problème, aucune référence à Swift mais je peux à peine taper un caractère ou deux avant d'obtenir cette erreur.
BytesGuy

1
Une enquête plus approfondie m'a conduit à déterminer que je reçois l'erreur SourceKitService Terminated lorsque j'essaie d'utiliser la complétion de code sur une sous-classe de UIView.
Andrew Monshizadeh

4
Ce n'est pas la cause du problème. Je n'ai aucune idée pourquoi cela est voté.
Santa Claus

1
NRitH, j'ai eu ce problème lors de l'utilisation de Xcode 6 beta 1 et changer le projet était un correctif qui a fonctionné pour moi. Il existe probablement de nombreux bogues qui déclenchent cette erreur. Vous utilisez probablement une version plus récente de Xcode et ils ont probablement corrigé ce bogue.
Marius Fanu

8

J'ai eu ce problème toutes les quelques secondes dans Xcode 6 Beta 3, et cela a continué même dans des projets complètement nouveaux. J'ai changé la cible de déploiement de 8.0 à 7.1 et elle s'est arrêtée.


5

Votre projet est-il nommé Swift? En voyant ce message, la construction échouerait également ( <unknown>:0: error: module name "Swift" is reserved for the standard library). Essayez d'utiliser un autre nom de projet tel que SwiftTest. Ça marcherait.


3

Afin de résoudre ce problème, vous pouvez avoir un problème étrange avec votre code Swift. Par exemple, avoir plusieurs définitions d'IBOutlets parce que vous étiez en train de copier et coller. il s'agit généralement d'une erreur de syntaxe qui ne peut pas être gérée.


2
Je vois ce problème avec du code non modifié à partir d'un modèle de projet Xcode, donc je ne pense pas que ce soit un problème avec le code Swift.
ThomasW

Cela peut être dû à plusieurs IBOutlets portant le même nom.
Tony

3

J'ai trouvé qu'en tapant explicitement (statiquement) les types de variables, plutôt que de les inférer, j'ai résolu le problème pour moi.


3

Quittez Xcode s'il est ouvert. Puis à partir de Terminal run:

defaults delete com.apple.dt.Xcode

Cela restaurera Xcode aux paramètres par défaut. Ouvrez Xcode et tout devrait fonctionner à nouveau.


2

Pour moi (xcode 6.1), la raison était que j'avais oublié d'adopter ma sous-classe au protocole.

Par exemple, c'est faux:

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

et c'est ok:

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

Eu le même problème avec le protocole oublié. Merci pour votre conseil. Il semble que la version finale de xcode fonctionne toujours comme beta =)
John Kakon

Merci! Je deviens fou à ce sujet. Votre solution a résolu mon problème. J'espère que cela sera corrigé, semble étrange d'avoir à ajouter des protocoles sur chaque sous-classe ..
Alvin

1

Un programme composé uniquement de ces deux lignes (éventuellement erroné en termes de syntaxe Swift) suffit ici à provoquer l'erreur "SourceKitService Terminated":

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

Utiliser letau lieu de varfait que l'éditeur se comporte normalement à nouveau. Xcode version 6.0 (6A215l)


Je soupçonne généralement que ce bogue survient lorsque Xcode ne peut pas gérer une certaine erreur de syntaxe - dans le code réel ou lors de la construction (dans l'exemple d'avoir rapide dans le nom du projet)
Lyndsey Scott

Je dis que le bogue est probablement causé par une erreur de syntaxe et puisque votre code a une erreur de syntaxe claire, il est conforme à ma théorie.
Lyndsey Scott

"SourceKitService Terminated" comme réponse à une erreur de syntaxe n'a aucun sens. C'est l'erreur que je signalais. C'est le bug en question.
Alexander

Oui. C'est le sens du mot "bug". Ce bogue semble être déclenché par des erreurs de syntaxe. Espérons qu'Apple le corrigera bientôt.
Lyndsey Scott

1

J'ai le même problème aujourd'hui, la chose était avec println, je viens d'essayer l'ancien style NSLog pour imprimer une valeur:

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

La façon dont nous devons composer les chaînes en swift a évolué du style printf au style inline, alors maintenant vous intégrez vos valeurs directement dans la chaîne de format comme ceci:

"Here goes \(YOUR_VARIABLE)"

Ainsi, pour l'exemple ci-dessus, la solution est:

println("value =\(valueObj)")

Hé, @downwoter, quel est le problème avec cette réponse? Ça me semble bien. Je sais que nous pourrions encore utiliser NSLog avec Swift, mais println est le moyen de le faire depuis Swift. Et cette réponse est directement liée au problème, la ligne décrite plante le service SourceKit.
MANIAK_dobrii

J'ai eu un problème similaire avec un println () essayant d'imprimer un tuple sans nom
thisispete

1

J'ai eu le même problème avec Xcode6 beta 3 pour un projet créé en beta 2.

C'était à cause de nouveaux changements de rupture dans le langage rapide, c'est-à-dire la syntaxe de déclaration de tableau.

Vérifiez le code effectué en raison des changements de rupture dans la bêta 3.

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

L'un des exemples dans mon cas était:

J'ai dû changer:

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

à

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

Conclusion: il semble qu'il y ait une erreur dans le code source, dans certaines conditions, cette erreur est produite par Xcode.

Solution jusqu'à ce que le bug soit corrigé: Vérifiez l'erreur manuellement :)

Bonne chance!


1

La solution pour moi était de changer le simulateur. J'utilisais l'iPhone 5S pour mon simulateur et quand je l'ai changé pour l'iPhone 5, tout fonctionnait parfaitement. Espérons qu'une future version le corrigera complètement.


J'ai trouvé que le simulateur de l'iPhone 5 est toujours le meilleur choix, tous les autres se
plantent

@DanielGalasko Intéressant. J'utilise habituellement l'iPhone 5S, c'est très stable pour moi.
Fomentia

si vous utilisez Xcode 6.1, cela a été résolu à ma compréhension :)
Daniel Galasko

Je rétracte ma déclaration, elle est toujours cassée et le 5 est certainement le seul simulateur qui fonctionne
Daniel Galasko

1

J'ai trouvé que la suppression des données dérivées du terminal résout le problème jusqu'au prochain crash. : S

Il se trouve dans: / Users / {User name} / Library / Developer / Xcode / DerivedData / {Project Name} - {Random char sequence}

J'espère que ça aide.


1

Je pense que j'ai compris une (car il y en a probablement beaucoup) des raisons pour lesquelles cela se produit.

Dans mon cas, j'importais des fichiers Objective-C via l'en-tête de pontage qui présentait l'une des conditions suivantes:

  1. Le fichier d'implémentation (.m) pour l'importation Objective-C n'avait pas la cible d'application correctement définie.
  2. Le fichier Objective-C n'avait qu'un fichier d'en-tête (.h) et NON un fichier d'implémentation (.m). (Encore une fois, je pense que cela fait partie de l'ensemble "pas de cible d'application appropriée", car vous ne pouvez définir des cibles que dans les fichiers .m et non dans les fichiers .h)

La correction des cibles d'application sur les fichiers Objective-C OU la suppression de l'importation de ces fichiers dans l'en-tête de pontage semble résoudre le problème.

Pour info - Si vous devez définir la cible des fichiers d'en-tête (.h) qui n'ont pas de fichier d'implémentation (.m), vous pouvez suivre ces étapes simples: Impossible de modifier la visibilité de l'appartenance à la cible dans Xcode 4.5


1

Juste pour ajouter une autre solution potentielle ici, j'avais accidentellement nommé une classe var du même nom que son type:

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

Cela plantera SourceKit FOR SURE. Erreur de syntaxe stupide, mais au cas où quelqu'un d'autre ferait la même erreur.

Edit: également selon @Portland Runner:

De même, si vous définissez le type de retour sur le nom func, vous obtiendrez l'erreur.

func foo() ->foo{}

1
De même, si vous définissez le type de retour sur le nom func, vous obtiendrez l'erreur. func foo() ->foo{} (n'hésitez pas à l'ajouter à votre réponse)
Portland Runner

0

Lorsque cette erreur commence à apparaître, commentez simplement le dernier / récent morceau de code que vous avez écrit et attendez un moment. La coloration syntaxique devrait réapparaître. C'est ainsi que je contourne le problème.

    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)
    }

Le système se réinitialise indépendamment de tout ce que vous faites. Vous n'avez pas à commenter la ligne, elle recommencera à fonctionner sous peu. Et planter aussi, bien sûr.
Maury Markowitz

0

Signalé à Apple (# 17266321):

Détails:

Résumé: Si nous essayons d'imprimer un dictionnaire avec une valeur sous forme de tableau, un pop-up continue à apparaître en disant - "SourceKit terminé. Fonctionnalité de l'éditeur limitée temporairement". Xcode Gèle et perd la reconnaissance de contexte provoquant le noircissement du texte.

Étapes pour reproduire: 1. Créez un tableau comme - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"

  1. Créez un dictionnaire sous la forme - "var MacOSYosemiteFeatures: Dictionary = [" Device ": iOSHistoryArray]".

  2. Imprimez le dictionnaire en tant que - "println (" Dictionnaire contenant la valeur du tableau:% @ \ n ", MacOSYosemiteFeatures)" (<< - Coupable - >>)

  3. L'étape 3 provoque le commentaire du problème qui rend le Xcode fonctionnel à nouveau.

Résultats attendus: Xcode devrait fonctionner normalement.

Résultats réels: Xcode devient non fonctionnel, perd la reconnaissance du contexte (toutes les polices sont perdues et tout le texte devient noir), l'ensemble Xcode devient inactif.

Version: Version 6.0 (6A215l)


0

Essayez-le:

Il y a un bogue dans le compilateur / indexeur Swift. Une ou plusieurs lignes de votre code lui posent des problèmes. Vous devrez modifier votre code avec un autre éditeur de texte pour commenter la ou les lignes incriminées avant de pouvoir ouvrir ce projet avec Xcode. Si vous n'avez aucune idée du problème, commentez tout votre code. Une fois le projet ouvert, vous pouvez commencer à ramener le code petit à petit jusqu'à ce que l'augmentation de l'activité du processeur vous indique que vous avez trouvé le problème.


@Pang si les réponses sont correctement valides et les mêmes, alors les questions sont probablement des doublons, vous devriez donc voter ou signaler pour les fermer - Dans ce cas, il s'agit certainement de l'ouvrir
mmmmmm

0

Problème:

  • S'il y a une erreur dans le code source, la fenêtre contextuelle "SourceKitService Terminated" peut apparaître et la mise en surbrillance du code cesse de fonctionner. Cela peut ou non se produire, quand il le fait dans plusieurs conditions différentes.

Mon cas: Bêta 3 installée, projet OSX uniquement, un fichier a détecté l'erreur "l'opérateur de plage semi-fermée est passé de .. à .. <". La fenêtre contextuelle commence à apparaître et la mise en surbrillance du code commence à échouer.

Solution:

  • Correction d'une erreur détectée par Xcode
  • Passez à un .swift différent dans Navigator, revenez à l'original
  • La surbrillance de la syntaxe réapparaît et le pop-up "SourceKitService terminé" a disparu


0

Dans mon cas, j'avais importé des fichiers manquants dans un en-tête ponté. Après avoir supprimé les importations incorrectes, la notification d'erreur a disparu.


0

J'ai eu la même erreur avec le projet Objective-C ++ imbriqué qui inclut maintenant Framework avec du code Swift. Afin de résoudre ce problème, j'ai dû créer explicitement le cadre. Une fois que j'ai fait, ce problème a disparu et ne revient pas;)


0

Toujours avec xcode 6 version 6.0 (6A313)

  • Créer un nouveau projet
  • Ajouter un cadre et une bibliothèque
  • Sélectionner le cadre tactile de cacao
  • Ajouter un fichier Swift
  • Ajouter une classe au fichier swift

Crashes

ps: tout nouveau mac mini, aucune installation précédente de xcode, rien d'exotique. Juste un produit bêta, je suppose.


0

Xcode 6.1 Beta 3:

Dès que vous définissez un alias de type non privé (par exemple typealias Foo = Int) dans un fichier Swift et tapez la lettrec dans un autre fichier, SourceKitService se bloque.

La solution consiste soit à ne plus utiliser d'alias de type, à attendre la prochaine version bêta ou à encapsuler vos alias de type dans les définitions de classe:

public class DummyClass {
    public typealias Foo = String
}

et utilisez-le comme ceci:

var myVar:DummyClass.Foo?

0

Changer la cible de déploiement en iOS 8.0 a fonctionné pour moi. Je sais que quelqu'un a dit que le déplacer vers <= 7.1 fonctionnait, mais ce problème semble provenir de plusieurs sources, donc cette alternative peut fonctionner.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.