SourceKitService tiêu thụ CPU và khiến Xcode tạm dừng


109

Đây KHÔNG phải là vấn đề Beta. Tôi đang sử dụng Xcode 6.0.1, phiên bản sản xuất. Vấn đề tôi đang gặp phải là khi tôi cố gắng thực hiện Xây dựng hoặc Chạy mã mà tôi đang làm việc, Xcode trở nên không phản hồi trong một khoảng thời gian dài và SourceKitService tiêu thụ tới 400% CPU (theo Activity Monitor). Vấn đề này mới xảy ra trong vài ngày qua, mặc dù, kỳ lạ là tôi đã sử dụng Xcode 6.0 kể từ khi nó được phát hành chính thức vào ngày 17 tháng 9. Tôi đã nâng cấp lên 6.0.1 với hy vọng nó sẽ có bản sửa lỗi cho vấn đề này.

Bất kỳ ý tưởng nào về vấn đề có thể là gì?


Bạn đã kiểm tra mức tiêu thụ bộ nhớ chưa? Tôi đã không gặp phải vấn đề này trong một thời gian, nhưng nó thực sự tồi tệ trong bản beta khi nó sẽ tiêu thụ tất cả RAM và sau đó là HCF. Nói chung là do các dòng số học dài hơn, đặc biệt là với các chỉ số con. Bạn sẽ cần phải phân chia và chinh phục để tìm ra mã vi phạm (nhưng hợp pháp). Khi bạn tìm thấy dòng, vui lòng thử tái tạo trong Playground và gửi báo cáo lỗi.
Chris Conover

Ngoài ra, hãy xem các bài đăng có ngày tháng được thừa nhận này: stackoverflow.com/questions/24873219/…stackoverflow.com/questions/24873219/…
Chris Conover

Vẫn còn một số lỗi đã biết khi bạn có thể đọc trong một số chủ đề trên các diễn đàn dành cho nhà phát triển của Apple. Xcode 6.1 Beta 3 giải quyết tình trạng tiêu thụ CPU cao nhưng giới thiệu các CPU khác nhau. Rất thất vọng.
Klaas

1
Tôi đang gặp vấn đề tương tự. Tôi đã gặp sự cố trên Xcode 7 và bây giờ là 8. Điều duy nhất thay đổi là mã đi kèm với Xcode của bạn. Tôi đoán rằng lập chỉ mục lại hoặc mã mới là nguyên nhân gốc rễ. Điều này có thường xảy ra khi bạn kéo mã từ ngược dòng không?
Honey

Câu trả lời:


151

Đã gặp sự cố này với Xcode 6.1.1 vào đầu giờ chiều nay (không phải phiên bản beta, phiên bản phát hành chính thức). Tôi đã chạy một số mã trên Playground và nghi ngờ đó là nguyên nhân. CPU đã được cố định gần 100% và Xcode không thể hoàn thành các bản dựng.

Vì vậy, đây là những gì tôi đã làm:

1. Mở "Activity Monitor", hiển thị SourceKitService là ổ cắm CPU chính.

2. Trong "Activity Monitor", nhấp đúp vào SourceKitService và nhấp vào phần "Open Files and Ports", phần này cho thấy nó đang hoạt động trên các tệp trong thư mục / Users / myname / Library / Developer / Xcode / DerivedData / ModuleCache / cho một thư mục cụ thể.

3. Đã xóa thư mục được chỉ định (khỏi dòng lệnh, sử dụng rm -rf). Bộ nhớ đệm được tạo lại dựa trên Tôi có thể xóa nội dung của thư mục Dữ liệu gốc Xcode một cách an toàn không? .

4. Sử dụng lại Activity Monitor, Force-Quit SourceKitServer. Đã thấy dấu hiệu giờ đã quá quen thuộc trong Xcode nói rằng SourceKitService đã bị lỗi (vì vậy đó là lý do tại sao SourceKitService nghe quen thuộc!).

5. Lặp lại bước 3.

Mac yên bình trở lại. Không có dữ liệu nào bị mất và Xcode thậm chí không cần phải khởi động lại (mà tôi đã thử không thành công). Điểm mấu chốt là ModuleCache dường như đang nhận được SourceKitService trong một vòng lặp và việc xóa thư mục dường như sẽ khắc phục được sự cố. Hy vọng điều này cũng làm việc cho bạn.

Bootnote:

Nhân tiện, nguyên nhân gây ra sự cố SourceKitService là do tôi đã khai báo mảng quá dài trong lớp Swift của mình. Tôi đã có hơn 200 mục nhập trong một mảng. Giảm nó xuống 30 và lỗi đã biến mất. Vì vậy, vấn đề có thể đã phát sinh do một số loại tràn ngăn xếp trong mã apple (dự định chơi chữ).


Cảm ơn câu trả lời của bạn. Bạn nên chỉnh sửa câu trả lời của mình thay vì tự bình luận.
Axalo

3
Tôi đã gặp sự cố tương tự với một khai báo mảng dài trong Swift dựa vào suy luận kiểu trong quá trình khởi tạo. Tôi thấy rằng bằng cách chú thích rõ ràng loại đã giải quyết được sự cố.
jay492355

2
Cùng một vấn đề. mảng lớn với từ điển. Tôi chỉ cần đặt tất cả dữ liệu vào tệp .PLIST và đọc nó.
Bruno Paulino

64
Có làm phiền ai khác rằng trong năm 2016 chúng ta không thể xử lý mảng 200 phần tử không? Tôi đã sử dụng các mảng dài hơn trong BASIC trên Atari 600 vào những năm 80.
Eddie Sullivan

2
Bây giờ tôi gặp vấn đề tương tự và như @ jay492355 đã đề cập, bạn cần phải nhập mảng của mình một cách rõ ràng.
Guy Kogus

24

Tôi gặp sự cố vì tôi đang khai báo một mảng có khoảng 60 phần tử giống như sau:

let byteMap = [

["ECG" : (0,12)],
["PPG" : (12,3)],
["ECG" : (15,12)],
["PPG" : (27,3)],
["ECG" : (30,12)]

Bằng cách chú thích rõ ràng loại như thế này:

let byteMap : [String: (Int, Int)] = [

["ECG" : (0,12)],
["PPG" : (12,3)],
["ECG" : (15,12)],
["PPG" : (27,3)],
["ECG" : (30,12)],

Tôi đã có thể làm cho nó dừng lại. Tôi nghĩ rằng nó phải có gì đó liên quan đến kiểu suy luận và kiểm tra kiểu của Swift khiến nó đi vào vòng lặp khi gặp một mảng dài.

Đây là trong Xcode 6.2. Tôi cũng đã xóa ModuleCache như được mô tả ở trên và bây giờ mọi thứ đều tốt.


2
Vâng, vấn đề này là nổi tiếng spin.atomicobject.com/2016/04/26/swift-long-compile-time
onmyway133

1
Vấn đề tương tự đối với tôi trên Xcode 8.1. Tôi có một mảng các đối tượng NSConstraintLayout. Hoạt động tốt với 4. Hoạt động tốt với 6. Không tốt lắm với 7 và hoàn toàn không hoạt động với 8. Tôi đã tạo hai mảng với 4 đối tượng mỗi mảng và nó hoạt động tốt.
Dan Loughney

@ onmyway133 Tôi tự hỏi tại sao nó không xảy ra mọi lúc và nó chỉ thỉnh thoảng xảy ra
Honey

Bạn có nghĩ rằng nếu bạn gặp một cái gì đó giống như return ["a", "b", "c", "d", "e", "f"]trong một hàm trả về [String]mà nó vẫn gặp sự cố với kiểu suy luận?
shim

10

Sự cố này đã xảy ra như 10 lần, 8 lần nó xảy ra khi tôi kết nối một thiết bị thực tế và không chạy qua trình mô phỏng.

Tôi không chắc liệu giải pháp của mình có tốt hay không, nhưng đối với tôi, tôi tin rằng vấn đề là do chuyển đổi giữa trình mô phỏng và thiết bị thực tế. Nghe có vẻ kỳ lạ nhưng nó giống như thể nó đang tạo ra sự can thiệp giữa các tệp bộ nhớ cache .

Điều gì đã giải quyết vấn đề của tôi:

  • Thư mục bản dựng sạch: (trên Xcode)Alt + Shift + Command + K
  • Đặt lại Nội dung và Cài đặt: (trên Trình mô phỏng) Command + Shift + K.
  • Chờ lâu hơn một chút so với bình thường và làm quá tải Xcode với các lần nhấp liên tục

Vì vậy, về cơ bản trước khi bạn cố gắng chạy trên bất kỳ thiết bị mới nào, chỉ cần xóa bất kỳ bộ nhớ cache nào.

BIÊN TẬP

Tôi vừa gặp sự cố mà không có bất kỳ kết nối thiết bị nào. Tôi chỉ cần thoát Xcode và mở lại và sự cố đã biến mất. Không chắc chắn dự đoán của tôi là nó có thể là một số vấn đề lập chỉ mục lại sau khi bạn tìm nạp / kéo hợp nhất mã mới.


Tôi thực sự ước điều này có hiệu quả vì tôi đang tuyệt vọng. Thật không may, nó lại bắt đầu quay ngoài tầm kiểm soát ngay sau khi tôi bắt đầu viết mã.
Anh T

Tôi không chắc lắm nhưng đôi khi chỉ cần chuyển nhánh, kéo từ thượng nguồn đã giải quyết được vấn đề của tôi. Quan điểm của tôi là tôi không làm những gì câu trả lời được chấp nhận đang đề xuất và nhưng vấn đề của tôi đã được giải quyết bằng cách nào đó tôi vẫn chưa bẻ khóa: /
Honey

4

Tôi đã giải quyết một vấn đề khác khiến SourceKitService sử dụng tới 13GB bộ nhớ ...

Tôi đã có Chuỗi (dòng định dạng với nhiều đối số:

return String(format: "%d,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", samples.count,sum1.x,sum1.y,sum1.z,sum1.rx,sum1.ry,sum1.rz,sum2.x,sum2.y,sum2.z,sum2.rx,sum2.ry,sum2.rz,sum3.x,sum3.y,sum3.z,sum3.rx,sum3.ry,sum3.rz)

khi được thay thế bằng cái này, nó hoạt động tốt (không tích tụ bộ nhớ và tiêu thụ CPU bình thường)

    var output: String = ""

    output += String(format: "%d,", samples.count)
    output += String(format: "%.3f,%.3f,%.3f,", sum1.x, sum1.y, sum1.z)
    output += String(format: "%.3f,%.3f,%.3f,", sum1.rx, sum1.ry, sum1.rz)
    output += String(format: "%.3f,%.3f,%.3f,", sum2.x, sum2.y, sum2.z)
    output += String(format: "%.3f,%.3f,%.3f,", sum2.rx, sum2.ry, sum2.rz)
    output += String(format: "%.3f,%.3f,%.3f,", sum3.x, sum3.y, sum3.z)
    output += String(format: "%.3f,%.3f,%.3f", sum3.rx, sum3.ry, sum3.rz)

    return output

4
Làm thế nào bạn nhận ra rằng đoạn mã này là vấn đề?
KK

3

Tôi đã gặp sự cố này với Xcode 9 và đã khám phá một số giải pháp. Đối với tôi, tắt Kiểm soát nguồn dường như là một mẹo nhỏ.

Xcode -> Preferences -> Source Control -> uncheck "Enable Source Control"

Nếu điều này không hiệu quả, tôi khuyên bạn nên sử dụng lệnh reniceterminal . Thêm về điều đó ở đây

tắt Kiểm soát nguồn

Các bước khác mà tôi đã thử nhưng không giúp được gì:

  1. Đóng Xcode -> Xóa dữ liệu có nguồn gốc
  2. máy đạp xe
  3. dự án "sạch"

2

Đối với tôi, nó hoạt động để xóa Dữ liệu có nguồn gốc. Chọn 'Sản phẩm' từ menu và giữ phím Alt và chọn 'Thư mục bản dựng sạch'. Phím tắt: Alt + Shift + Command + K


2
  1. Thoát Xcode
  2. Chạy trong Terminal:

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


Lưu ý sự khác biệt giữa câu trả lời được chấp nhận của LNI và câu trả lời này:

  1. Luôn luôn tốt hơn là không bị rơi hơn là bị rơi. Đặc biệt, khi nói đến các quy trình / thành phần Xcode.
  2. Tôi không phải là nhà phát triển của Apple, nhưng việc xóa một phần bộ nhớ cache có thể phá vỡ tính toàn vẹn của nó. Tôi không nhận thấy bất kỳ sự chậm trễ đáng kể nào sau khi làm sạch tất cả bộ nhớ cache.

2

Tôi dành 4 giờ để tìm ra các vấn đề trong một bản tổng hợp dài của dự án của mình. Lần thử đầu tiên mất 42 phút để biên dịch.

Tôi xóa tất cả bộ nhớ cache /Users/myname/Library/Developer/Xcode/DerivedData/ModuleCache/theo đề xuất của @LNI, sau khi khởi động lại SourceKitServicevà áp dụng một số thay đổi cho mã:

1 đến

    var initDictionary:[String:AnyObject] = [
                    "details" : "",
                    "duration" : serviceDuration,
                    "name" : serviceName,
                    "price" : servicePrice,
                    "typeId" : typeID,
                    "typeName" : typeName,
                    "url" : "",
                    "serviceId" : serviceID,
                    "imageName" : ""
                ]

Từ

    var initDictionary= [
                    "details" : "",
                    "duration" : serviceDuration,
                    "name" : serviceName,
                    "price" : servicePrice,
                    "typeId" : typeID,
                    "typeName" : typeName,
                    "url" : "",
                    "serviceId" : serviceID,
                    "imageName: "" ]

2) Tới

            if let elem = obj.property,
                let elem2 = obj.prop2,
                etc
                 {
                 // do stuf here
            }

Từ

           let value1 = obj.property ?? defaultValue

3)

Đến

           let serviceImages = images.filter { $0.serviceId == service.id }
           let sorted = serviceImages.sort { $0.sort > $1.sort }

Từ

            let serviceImages = images.filter { $0.serviceId == service.id }. sort { $0.sort > $1.sort }

Kết quả là thời gian biên dịch - 3 phút, không quá nhanh nhưng tốt hơn trong 42 phút.

Kết quả là trước SourceKitService- chiếm ~ 5,2Gb bộ nhớ và sau ~ 0,37Gb

nhập mô tả hình ảnh ở đây


2

Tôi đã gặp vấn đề tương tự với SourceKitService.

Tôi đã giải quyết. KHÔNG BAO GIỜ THÊM BÀI ĐÁNH GIÁ VỚI ĐỂ LOOP.

Để phát hiện sự cố, tôi sử dụng: https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode


bạn đã giải quyết như thế nào Tôi thêm subviews của tôi với vòng lặp for và bây giờ làm sạch bộ nhớ cache không sửa chữa @Zhanserik
10donovanr

1
@ 10donovanr KHÔNG BAO GIỜ THÊM BÀI VIẾT ĐĂNG KÝ VỚI ĐỂ LOOP. Sau đó bộ nhớ cache thử ứng dụng sạch với CMD + SHITF + K
Zhanserik

2

Không tạo từ điển nhanh chóng mà không chỉ định kiểu dữ liệu hoặc với [Chuỗi: Bất kỳ]

Nếu chúng ta sử dụng kiểu 'Bất kỳ', trình biên dịch có thể chạy vào một vòng lặp vô hạn để kiểm tra kiểu dữ liệu.

Nó sẽ không tạo ra bất kỳ lỗi biên dịch nào, nó sẽ làm cho máy Mac của chúng tôi bị đóng băng khi 'biên dịch tệp nguồn nhanh' với việc chiếm nhiều bộ nhớ cho các tác vụ có tên 'nhanh' & 'NguồnKitService'.


2

Tôi đã phải đối mặt với một vấn đề như vậy. Dịch vụ bộ nguồn đã sử dụng 10 gb sử dụng. Quá trình Swift trong màn hình hoạt động đạt mức sử dụng hơn 6 GB. Tôi đã sử dụng mã sau:

var chi tiết: [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]

Tôi đã thay đổi mã thành sau để giải quyết vấn đề này:

var chi tiết: [String: Any] = [:]

chi tiết ["1"] = 1

chi tiết ["2"] = 2

chi tiết ["3"] = 3

chi tiết ["4"] = 4

chi tiết ["5"] = 5

chi tiết ["6"] = 6

chi tiết ["7"] = 7

chi tiết ["8"] = 8

chi tiết ["9"] = 9

chi tiết ["10"] = 10

chi tiết ["11"] = 11

chi tiết ["12"] = 12

chi tiết ["13"] = 13

chi tiết ["14"] = 14

chi tiết ["15"] = 15

chi tiết ["16"] = 16


Trời ạ .... ai mà ngờ .... chính xác là tôi đã có mã tương tự và có SourceKitService hút hết sự sống của CPU. Thay đổi mã chỉ làm cho nó biến mất.
AnBisw

2

Sự cố vẫn xảy ra trong XCode 10.0. Bạn có thể khắc phục bằng cách tắt "Hiển thị thay đổi Kiểm soát Nguồn" trong tùy chọn Kiểm soát Nguồn.

nhập mô tả hình ảnh ở đây


Tuyệt vời, nhưng ít hơn cần thiết nếu việc mài Xcode của nó bị dừng lại.
Shayne

1

Đối mặt với vấn đề tương tự trên Xcode 7.2 (7C68)

Giải pháp là triển khai một phương thức của một giao thức, mà lớp của tôi có trong định nghĩa.


1

Đây vẫn là một vấn đề trong xcode Phiên bản 7.3.1 (7D1014), nguyên nhân đối với tôi là, như LNI đã chỉ ra, một mảng quá dài, thực tế không quá dài. Tôi đã khắc phục sự cố của mình bằng cách chia mảng thành nhiều mảng khác nhau như sau:

let firstLevel = [
            [1, 0, 1, 0, 1],
            [0, 0, 0, 0, 0],
            [1, 0, 1, 0, 1],
            [0, 0, 0, 0, 0],
            [1, 0, 1, 0, 1],
            [0, 0, 0, 0, 0]
        ]
        let secondLevel = [
            [0, 0, 0, 0, 0],
            [0, 1, 0, 1, 0],
            [0, 0, 0, 0, 0],
            [0, 1, 0, 1, 0],
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0]
        ]
        let thirdLevel =     [
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0],
            [0, 0, 1, 0, 0],
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0]
        ]
        let map = [firstLevel, secondLevel, thirdLevel]

1

Tôi đã gặp sự cố tương tự với XCode 8.2.1 (8C1002) và mã sau:

import UIKit
import AVFoundation
import Photos
import CoreMotion
import Foundation


class TestViewController: UIViewController
{
    let movieFileOutput = AVCaptureMovieFileOutput()


var anz_total_frames = 0, anz_total_miss = 0

@IBOutlet weak var tfStatistics: UITextView!


func showVideoStatistics()
{
    let statisticText:String =             "frames: \(self.anz_total_frames)" + String.newLine +

        "frames/s: \(self.anz_total_frames / self.movieFileOutput.recordedDuration.seconds)" + String.newLine +

        "miss: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
    "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine +
        "nicht erkannt: " + formatText4FramesPercent(self.anz_total_miss) + String.newLine


    self.tfStatistics.text = statisticText
}

func formatText4FramesPercent(_ anz:Int) -> String
    {
        let perc = Double(anz)*100.0/Double(anz_total_frames)
        return String(perc.format(".1") + "%")
    }
}

và các phần mở rộng này:

extension String {
    var localized: String {
        return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
    }

    static var newLine: String {
        return "\r\n"
    }
}

extension Int {
    func format(_ f: String) -> String {
        return String(format: "%\(f)d", self)
    }
}

extension Double {
    func format(_ f: String) -> String {
        return String(format: "%\(f)f", self)
    }
}

Tôi đã giải quyết nó bằng cách bình luận dòng này trong TestViewController:

        "frames/s: \(self.anz_total_frames / self.movieFileOutput.recordedDuration.seconds)" + String.newLine +

Tôi đã mất hơn một giờ để tìm thấy nó, tôi hy vọng a có thể tiết kiệm thời gian của người khác. Tôi đã gửi báo cáo lỗi cho Apple với số 30103533


1

Tôi đã gặp phải vấn đề tương tự sau khi chuyển dự án sang swift 3, việc tìm ra giải pháp mất nhiều thời gian do từ điển và mảng được tạo không có kiểu dữ liệu.


1

Hành vi này xuất hiện trong dự án của tôi khi tôi vô tình khai báo một lớp kế thừa từ chính nó. Xcode 8.2.1, sử dụng Swift 3.


1

Tôi cũng gặp sự cố này, trong trường hợp của tôi, tôi đang khai báo một mảng lớn như thế này:

var myArray: [(String, Bool?)]?
myArray = [("someString", someBool),
("someString", someBool),
("someString", someBool),
("someString", someBool),
("someString", someBool)
.
.
("someString", someBool)]

Tôi đã giải quyết vấn đề bằng cách thêm các mục 1 trên mỗi dòng thay vì tất cả cùng một lúc:

var myArray = [(String, Bool?)]()
myArray.append(("someString", someBool))
myArray.append(("someString", someBool))
myArray.append(("someString", someBool))
myArray.append(("someString", someBool))
myArray.append(("someString", someBool))
.
.
.

điều này đã khắc phục sự cố.


1

Đối với các dự án Objective-C:

Tôi đã gặp vấn đề tương tự và không có mã Swift nào trong dự án của chúng tôi, vì vậy nó không phải là trình kiểm tra suy luận kiểu.

Tôi đã thử mọi giải pháp khác ở đây và không có gì hiệu quả - những gì CUỐI CÙNG đã khắc phục cho tôi là khởi động lại máy tính ở chế độ khôi phục và chạy sửa chữa đĩa. Cuối cùng tôi có thể làm việc trong hòa bình trở lại!

Tôi đoán rằng điều đó đã xảy ra do một số liên kết tượng trưng bị hỏng, có thể chỉ về phía nhau và làm cho dịch vụ chạy xung quanh trong một vòng lặp vô tận.


1

Tôi đang gặp sự cố tương tự với Xcode 8.2.1 - với một phần hơn 1.000 dòng mã được nhận xét qua / * * /. Phần nhận xét đã gây ra sự cố và việc xóa mã đã nhận xét đã khắc phục sự cố.


1

Tôi gặp phải một cái gì đó tương tự kết hợp nhiều ?? toán tử để cung cấp mặc định cho các giá trị chuỗi tùy chọn.

Tôi đang thử nghiệm với mã gỡ lỗi bên dưới khi quạt trên chiếc MacBook Pro giữa năm 2010 đáng tin cậy của tôi bắt đầu chạy khó. SourceKitService đang hút hết mọi chu kỳ CPU mà nó có thể nhận được. Nhận xét và bỏ ghi chú dòng vi phạm cho thấy rất rõ ràng điều mà SourceKitService đang mắc phải. Có vẻ như sử dụng nhiều hơn một ?? nhà điều hành để cung cấp mặc định là một vấn đề trên một máy cũ. Công việc xung quanh chỉ là đừng làm nó. Chia nó thành nhiều nhiệm vụ, điều này làm cho một số mã gỡ lỗi xấu xí thậm chí còn xấu hơn.

placeMark là một thể hiện của CLPlacemark. Các thuộc tính được sử dụng ở đây trả về các chuỗi tùy chọn.

Tôi đang sử dụng Xcode Phiên bản 8.3.2 (8E2002) chạy trên OS 10.12.4 (16E195)

// one term is not an issue
let debugString1 = (placeMark.locality ?? "")

// two terms pushes SourceKitService CPU use to 107% for about 60 seconds then settles to 0%
let debugString1 = (placeMark.locality ?? "")  + ", " +  (placeMark.administrativeArea ?? "") 

// three terms pushes SourceKitService CPU use to 187% indefinitely 
let debugString1 = (placeMark.locality ?? "")  + ", " +  (placeMark.administrativeArea ?? "")  + (placeMark.postalCode ?? "")

// ugly but it's safe to use
var debugString1 = placeMark.locality ?? ""
debugString1 = debugString1 + ", " +  (placeMark.administrativeArea ?? "")
debugString1 = debugString1 + " " + (placeMark.postalCode ?? "")

Tôi tin rằng đây là một vấn đề với nối chuỗi và không ??. Nó muốn được đáng để thử với "\() \()" (string suy) thay vì
Brooks DuBois

1

Chuyển đổi Mảng dài thành Hàm dường như giải quyết được vấn đề cho tôi:

var color: [UIColor] {
    return [
        UIColor(...),
        UIColor(...),
        ...
    ]
}

đến:

func color() -> [UIColor] {
    return [
        UIColor(...),
        UIColor(...),
        ...
    ]
}

1

chạy trong thiết bị đầu cuối:

killall Xcode
rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache
open /Applications/Xcode.app

bạn cũng có thể tạo một lệnh đầu cuối bằng bí danh này:

echo alias xcodeFix='killall Xcode;rm -rf ~/Library/Developer/Xcode/DerivedData/ModuleCache;open /Applications/Xcode.app' >> ~/.profile
source ~/.profile

và sau đó chỉ cần chạy

xcodeFix

0

https://www.logcg.com/en/archives/2209.html

SourceKitService phụ trách công việc suy luận kiểu của Swift.

private lazy var emojiFace = ["?", "?", "?", "?"]

thay đổi thành loại rõ ràng

private lazy var emojiFace:[String] = ["?", "?", "?", "?"]

SourceKitService sử dụng CPU ngay lập tức thả xuống。


0

Đã xảy ra với tôi trên XCode 11.4.1 khi gọi các chỉ số đăng ký @dynamicMemberLookup bên trong khối SwiftUI @ViewBuilder.


0

Tôi đã gặp vấn đề tương tự và đó là do lỗi lập trình.

Trong trường hợp của tôi, tôi đang triển khai các giao thức có thể so sánh và tương đương và lhs.param và rhs.param không tương ứng với các tham số của các lớp lhs và rhs.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.