Ini BUKAN masalah Beta. Saya menggunakan Xcode 6.0.1, rilis produksi. Masalah yang saya alami adalah ketika saya mencoba melakukan Build atau Jalankan kode yang saya kerjakan, Xcode menjadi tidak responsif untuk jangka waktu yang lama dan SourceKitService mengkonsumsi hingga 400% dari CPU (menurut Activity Monitor). Masalah ini baru pada beberapa hari terakhir, meskipun, anehnya, saya telah menggunakan Xcode 6.0 sejak dirilis secara resmi pada 17 September. Saya meningkatkan ke 6.0.1 berharap ini akan berisi perbaikan untuk masalah ini.
Ada gagasan tentang apa masalahnya?
Jawaban:
Mengalami masalah ini dengan Xcode 6.1.1 sebelumnya sore ini (bukan beta, versi rilis resmi). Saya telah menjalankan beberapa kode di Playground dan mencurigai itu menjadi penyebabnya. CPU dipatok hingga hampir 100%, dan Xcode tidak dapat menyelesaikan pembuatan.
Jadi inilah yang saya lakukan:
1. Buka "Activity Monitor", yang menunjukkan SourceKitService sebagai CPU utama.
2. Di dalam "Activity Monitor", klik dua kali pada SourceKitService dan klik bagian "Open Files and Ports", yang menunjukkan bahwa ia sedang bekerja pada file di bawah direktori / Users / myname / Library / Developer / Xcode / DerivedData / ModuleCache / untuk folder tertentu.
3. Menghapus folder tertentu (dari baris perintah, menggunakan rm -rf). Cache dibuat ulang berdasarkan Dapatkah saya menghapus konten folder data Xcode Derived dengan aman? .
4. Menggunakan Monitor Aktivitas lagi, Tutup Paksa SourceKitServer. Melihat tanda yang sekarang-terlalu-terlalu-familiar dalam Xcode yang mengatakan bahwa SourceKitService telah rusak (jadi itulah mengapa SourceKitService terdengar familiar!).
5. Langkah berulang 3.
Mac kembali damai. Tidak ada data yang hilang dan Xcode bahkan tidak perlu di-restart (yang saya coba tidak berhasil). Intinya adalah ModuleCache tampaknya mendapatkan SourceKitService dalam satu lingkaran dan menghapus folder tampaknya memperbaikinya. Semoga ini berhasil juga untuk Anda.
Catatan Boot:
Ngomong-ngomong, penyebab masalah SourceKitService adalah karena saya memiliki deklarasi array yang terlalu panjang di kelas Swift saya. Saya memiliki lebih dari 200 entri dalam satu larik. Kurangi menjadi 30 dan kesalahannya hilang. Jadi masalah mungkin muncul karena beberapa jenis stack overflow dalam kode apple (pun intended).
sumber
Saya melihat masalah karena saya mendeklarasikan array dengan sekitar 60 elemen yang terlihat seperti ini:
Dengan secara eksplisit menjelaskan tipe seperti ini:
Saya bisa menghentikannya. Saya pikir itu pasti ada hubungannya dengan tipe-inferensi dan pemeriksaan tipe Swift yang membuatnya menjadi loop ketika menemukan array gondrong.
Ini ada di Xcode 6.2. Saya juga menghapus ModuleCache seperti dijelaskan di atas dan sekarang semuanya baik-baik saja.
sumber
return ["a", "b", "c", "d", "e", "f"]
dalam fungsi yang mengembalikan[String]
itu masih akan mengalami masalah dengan tipe-inferensi?Masalah ini terjadi seperti 10 kali, 8 kali terjadi ketika saya menghubungkan perangkat yang sebenarnya dan tidak menjalankan simulator.
Saya tidak begitu yakin apakah solusi saya bagus, tetapi bagi saya, saya yakin masalahnya adalah karena beralih antara simulator dan perangkat yang sebenarnya. Ini mungkin terdengar aneh tetapi seolah-olah itu menciptakan gangguan antara file cache .
Apa yang memecahkan masalah saya:
Alt + Shift + Command + K
Command + Shift + K
.Jadi pada dasarnya sebelum Anda mencoba menjalankan perangkat baru, hapus saja cache apa saja.
EDIT
Saya baru saja mengalami masalah tanpa koneksi perangkat apa pun. Saya baru saja keluar dari Xcode dan membukanya lagi dan masalahnya hilang. Tidak yakin tebakan saya adalah mungkin ada masalah pengindeksan ulang setelah Anda mengambil / menarik kode baru gabungan.
sumber
Saya menyelesaikan masalah lain yang menyebabkan SourceKitService menggunakan hingga 13GB memori ...
Saya memiliki String (format baris dengan banyak argumen:
ketika diganti dengan ini itu berfungsi dengan baik (tidak ada memori yang dibangun dan konsumsi CPU normal)
sumber
Saya telah mengalami masalah ini dengan Xcode 9 , dan menjelajahi beberapa solusi. Bagi saya, menonaktifkan Kontrol Sumber sepertinya berhasil.
Xcode -> Preferences -> Source Control -> uncheck "Enable Source Control"
Jika ini tidak berhasil, saya akan merekomendasikan menggunakan perintah renice di terminal . Lebih lanjut tentang itu di sini
menonaktifkan Kontrol Sumber
Langkah-langkah lain yang saya coba, tetapi tidak membantu:
sumber
Bagi saya itu berhasil menghapus Data Berasal. Pilih 'Produk' dari menu dan tahan tombol Alt dan pilih 'Bersihkan Folder Bangun'. Tombol pintas: Alt + Shift + Command + K.
sumber
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache/*
Perhatikan perbedaan antara jawaban yang diterima LNI dan yang ini:
sumber
Saya menghabiskan 4 jam untuk mencari tahu masalah dalam kompilasi panjang proyek saya. Percobaan pertama membutuhkan waktu 42 menit untuk dikompilasi.
Saya menghapus semua cache dari
/Users/myname/Library/Developer/Xcode/DerivedData/ModuleCache/
seperti yang disarankan oleh @LNI, setelah restartSourceKitService
dan menerapkan beberapa perubahan untuk kode:1) Kepada
Dari
2) Kepada
Dari
3)
Untuk
Dari
Hasilnya waktu kompilasi - 3 menit, tidak begitu cepat tetapi lebih baik selama 42 menit.
Akibatnya, sebelum
SourceKitService
- ambil memori ~ 5,2 Gb dan setelah ~ 0,37 Gbsumber
Saya memiliki masalah yang sama dengan SourceKitService.
Saya memecahkan. JANGAN PERNAH TAMBAHKAN SUBVIEW DENGAN FOR LOOP.
Untuk mendeteksi masalah yang saya gunakan: https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode
sumber
Jangan membuat kamus dengan cepat tanpa menentukan tipe data atau dengan [String: Any]
Jika kita menggunakan tipe 'Any', kompilator mungkin mengalami loop tak terbatas untuk memeriksa tipe data.
Itu tidak akan membuat kesalahan kompilasi, itu akan membuat mac kita berhenti di 'kompilasi file sumber cepat' dengan memperoleh banyak memori untuk tugas-tugas bernama 'swift' & 'SourceKitService'.
sumber
Saya telah menghadapi masalah seperti itu. Layanan kit sumber menggunakan 10 gb penggunaan. Proses cepat dalam monitor aktivitas mencapai penggunaan lebih dari 6 GB. Saya menggunakan kode berikut:
detail var: [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]
Saya telah mengubah kode menjadi berikut untuk mengatasi masalah ini:
detail var: [String: Any] = [:]
detail ["1"] = 1
detail ["2"] = 2
detail ["3"] = 3
detail ["4"] = 4
detail ["5"] = 5
detail ["6"] = 6
detail ["7"] = 7
detail ["8"] = 8
detail ["9"] = 9
detail ["10"] = 10
detail ["11"] = 11
detail ["12"] = 12
detail ["13"] = 13
detail ["14"] = 14
detail ["15"] = 15
detail ["16"] = 16
sumber
Masalahnya masih terjadi di XCode 10.0. Anda dapat memperbaikinya dengan menonaktifkan "Tampilkan Perubahan Kontrol Sumber" di opsi Kontrol Sumber.
sumber
Menghadapi masalah yang sama di
Xcode 7.2 (7C68)
Solusinya adalah dengan menerapkan metode protokol, yang dimiliki kelas saya dalam definisi.
sumber
Ini masih menjadi masalah di xcode Versi 7.3.1 (7D1014) penyebabnya bagi saya adalah, seperti yang ditunjukkan LNI, array yang terlalu panjang, sebenarnya tidak terlalu panjang. Saya memperbaiki masalah saya dengan memecah array menjadi berbagai array seperti ini:
sumber
Saya memiliki masalah yang sama dengan XCode 8.2.1 (8C1002) dan kode berikut:
dan ekstensi ini:
Saya menyelesaikannya dengan mengomentari baris ini di TestViewController:
Butuh waktu lebih dari satu jam untuk menemukannya, saya harap bisa menghemat waktu orang lain. Saya mengajukan laporan bug ke Apple dengan nomor 30103533
sumber
Saya menghadapi masalah yang sama setelah memigrasi proyek ke swift 3, mencari tahu solusi yang memakan waktu karena kamus dan array dibuat tanpa tipe data.
sumber
Perilaku ini muncul dalam proyek saya ketika saya secara tidak sengaja menyatakan kelas yang diwarisi dari kelas itu sendiri. Xcode 8.2.1, menggunakan Swift 3.
sumber
Saya juga mengalami masalah ini, dalam kasus saya, saya mendeklarasikan array besar seperti ini:
Saya memecahkan masalah dengan menambahkan item 1 per baris alih-alih semuanya pada saat yang sama:
ini memperbaiki masalah.
sumber
Untuk proyek Objective-C:
Saya memiliki masalah yang sama, dan tidak ada kode Swift di proyek kami, jadi itu bukan pemeriksa inferensi tipe.
Saya mencoba setiap solusi lain di sini dan tidak ada yang berhasil - yang AKHIRNYA memperbaikinya untuk saya adalah me-reboot komputer dalam mode pemulihan dan menjalankan perbaikan disk. Saya akhirnya bisa bekerja dengan damai lagi!
Saya menduga itu terjadi karena beberapa symlink yang rusak, mungkin mengarah ke satu sama lain dan membuat layanan berjalan dalam putaran tanpa akhir.
sumber
Saya mengalami masalah serupa dengan Xcode 8.2.1 - dengan lebih dari 1.000 baris kode dikomentari melalui / * * /. Mengomentari bagian tersebut menyebabkan masalah, dan menghapus kode yang diberi komentar telah memperbaikinya.
sumber
Saya mengalami sesuatu yang mirip dengan menggabungkan beberapa ?? operator untuk memberikan nilai default string opsional.
Saya sedang bereksperimen dengan kode debug di bawah ini ketika kipas pada MacBook Pro pertengahan 2010 saya yang terpercaya mulai bekerja keras. SourceKitService menyedot setiap siklus CPU yang bisa didapatnya. Mengomentari dan menghapus komentar pada baris yang menyinggung membuatnya sangat jelas apa yang dicekik oleh SourceKitService. Sepertinya menggunakan lebih dari satu ?? operator untuk menyediakan default adalah masalah pada mesin lama. Pekerjaan sekitar hanya jangan lakukan itu. Bagi menjadi beberapa tugas yang membuat beberapa kode debug jelek menjadi lebih jelek.
placeMark adalah turunan dari CLPlacemark. Properti yang digunakan di sini mengembalikan string opsional.
Saya menggunakan Xcode Versi 8.3.2 (8E2002) yang berjalan di OS 10.12.4 (16E195)
sumber
"\() \()"
(interpolasi string)Mengonversi Array panjang ke Fungsi tampaknya menyelesaikan masalah bagi saya:
untuk:
sumber
dijalankan di terminal:
Anda juga bisa membuat perintah terminal menggunakan alias ini:
dan kemudian lari saja
sumber
https://www.logcg.com/en/archives/2209.html
SourceKitService mengambil alih pekerjaan inferensi tipe Swift.
ubah untuk mengetik secara eksplisit
Penggunaan CPU SourceKitService segera turun。
sumber
Terjadi pada saya di XCode 11.4.1 saat memanggil langganan @dynamicMemberLookup di dalam blok SwiftUI @ViewBuilder.
sumber
Saya mengalami masalah yang sama dan itu disebabkan oleh kesalahan pemrograman.
Dalam kasus saya, saya menerapkan protokol yang sebanding dan dapat disamakan dan lhs.param dan rhs.param tidak sesuai dengan parameter kelas lhs dan rhs.
sumber