Swift Xcode 인덱스 동결 또는 느려짐
어쩌면 이것은 단지 나만 그런 짜증나는 "특징"을 경험하는 것일지도 모릅니다.
Xcode 6.0.1에서 Xcode 6.1로 업그레이드 된 후 상황이 바뀌었습니다.Xcode 6.1은 프로젝트를 영원히 인덱싱하거나 소스 파일을 컴파일합니다.그 프로젝트는 큰 프로젝트가 아닙니다.작업 공간에 Swift 파일과 AWS SDK 2.0 Cocoapod가 다수 포함되어 있을 뿐입니다.전체가 원활하게 색인을 만들고 컴파일하는 것을 방해해서는 안 된다고 생각합니다.저는 몇몇 aws-sdk-ios-sample들로 Xcode 6.1이 어떻게 작동하는지 확인하려고 시도했고, 결국 그것은 같은 영원히 기다리게 되었습니다.
지금까지 시도해 본 솔루션은 무엇입니까?
- Organizer에서 "Derived Data"를 삭제하고 다시 열고 작업영역을 다시 엽니다. (수정 실패)
- .xcode proj 파일에 "Package Contents 표시" 및 .xcworkspace 삭제 (Xcode 4 - 느린 성능)
그들 중 아무도 효과가 없었습니다, 불행하게도.
추신. 프로젝트를 다시 만들어 봐야 할까요?내 컴퓨터 설정:MacBook Pro(Retina, 13인치, 2014년 중반), 메모리 8GB 1600MHz DDR3(요세미티 포함)(이 정도면 이 작은 프로젝트를 실행하기에 충분하다고 생각합니다.)
파일 분할, Xcode 6.2 베타 설치, 문자열 연결문 깨기 등 위의 많은 제안을 시도했습니다. 리터럴 내게준은가를해고던다을는러로의트자의enftgrt는ysrrndanils내ygeo로t게s러준은을.append
진술들.
// This causes indexing/building to hang...
var test = [ [ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ],
[ "a": false, "b": "c" ] ]
// This works fine.
var test = [ [ "a": false, "b": "c" ] ]
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
또한 이 배열의 6번째 항목이 문제의 원인입니다. 5개는 정상적으로 작동합니다.
제가 해결할 수 있는 유일한 방법은 도출된 데이터를 모두 삭제한 후 Xcode를 다시 시작하는 것입니다.
Xcode에서 파일 열기 / 환경설정
팝업 창의 오른쪽 끝에 있는 위치를 클릭합니다.
"/Users/Mac/Library/Developer/Xcode/DerivedData" 옆의 작은 화살표 아이콘을 클릭하면 DerivedData 폴더(이전 프로젝트에서 파생된 모든 데이터가 포함됨)가 포함된 Xcode 폴더로 이동합니다.
DELETE DerivedData 폴더
당신은 코코아팟을 사용하고 있습니까?저는 오늘 일찍이 같은 문제를 발견했습니다.(xCode 6.1.1 사용)
문제를 해결하기 위해 의 모든 내용을 삭제했습니다.~/Library/Developer/Xcode/DerivedData
, , , , , , , , , , , , , , , , , , .Pods
디렉토리에 및내트에는더고,고더r는<project>.xcworkspace
.
터미널을 디렉토리로 로 한 했습니다 을 했습니다 한 로 을 실행했습니다.pod install
한 번, 다시.
오늘도 같은 문제가 있었습니다.Xcode 6.3.2 중형 스위프트 프로젝트한때 인덱싱을 시작했지만 인덱싱을 완료하지 못했습니다.이것을 야기한 코드는 [String:[String]], 따라서 문자열 배열을 값으로 하는 문자열 키 dict.A부터 Z까지 키가 있는 이 중 두 개를 가지고 있었는데 이 26개의 엔트리에는 각각 5~10개의 문자열 배열이 포함되어 있습니다.
파생된 데이터를 지우는 것은 도움이 되지 않았습니다.그 명령어들을 언급하는 것 만이 다시 진행되게 했습니다.
솔직히, 이건 말도 안돼요!애플은 Xcode를 고쳐야 합니다!스위프트 프로젝트를 컴파일할 때는 이미 엄청나게 느리지만 이와 같은 버그는 쇼스탑입니다.이것으로는 내 일을 제대로 할 수가 없어요!
여전히 이 문제를 겪고 있는 사람들에게, 이것은 개체를 일일이 입력할 필요가 없도록 해주는 제가 즐기게 된 해결책입니다.
// instead of this, which freezes indexing
let keys = [keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM]
// and instead of this, which is ugly & lengthy
var keys = [KeyboardKey]()
keys.append(keyQ)
keys.append(keyW)
...
keys.append(keyM)
// use this:
var keys = [KeyboardKey]()
keys.appendContentsOf([keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM])
저는 위의 모든 것을 시도해 보았지만 성공하지 못했습니다. 하지만 도출된 데이터 폴더를 삭제한 다음 다른 랜덤 프로젝트를 열고 인덱스가 생성될 때까지 기다렸다가 원래(오작동) 프로젝트가 작동합니다!
개발도상국을 호의적인 사과로 만들고 당신의 신속한 컴파일러를 오픈 소스로 만드십시오. 그래서 우리는 당신의 무능에 좌절하지 않습니다.
Xcode Version 7.3(7D175)을 사용하고 있습니다.
근본적인 문제를 발견한 것 같습니다.색인 단계에서 꼼짝 못하게 된 두 가지 경우:
변수에 할당한 클로저를 작성하고 유형 서명을 생략했습니다.xcode가 그 타입 추론 단계에 문제가 있었던 것 같습니다.내 기억이 맞다면 인수 중 하나가 CGPoint였는데, CGPoint는 오버로드된 생성자를 가지고 있습니다.저의 가설은 저의 종결이 논쟁으로 받아들여질 수 있는 가능성이 너무 많다는 것입니다.
한 종류의 인스턴스를 반환하는 대신 공통 기본 클래스를 가진 여러 종류의 인스턴스를 반환할 수 있도록 공장 방식을 변경했습니다.공장 방식을 사용하는 모든 곳에서 결과 개체를 특정 유형(as?를 사용하거나 특정 유형을 허용하는 변수에 할당하여)에 캐스팅해야 했던 것으로 보입니다. 다시 유형 추론 단계가 실패한 것 같습니다.
이전 사람들이 언급한 사전 선언도 마찬가지인 것 같습니다.사과로 버그 리포트를 제출했습니다.
저도 이 문제가 있어서 "+" 연산자로 표현을 삭제/변경하여 해결하였습니다.
변경했습니다.
var mainArray = arrayOne + arrayTwo + arrayThree + arrayFour + arrayFive
대상:
var mainArray = arrayOne
mainArray += arrayTwo
mainArray += arrayThree
mainArray += arrayFour
mainArray += arrayFive
문제가 해결됐습니다.
제 기계는 2013년 말에 MBP가 최대치입니다.
나는 다음과 같은 표현을 했습니다.
let x = (value as? Int) ?? someDefault
또한.
guard let x = (dateFormatter().string(from: Date()) + msg + "\n").addingPercentEncoding(...) else { ... }
그래서 요점은 유치원 수준의 표현만을 포함하도록 파일을 다시 쓰는 것입니다. 그러면 색인 문제는 사라질 것입니다.
6.1로 업그레이드한 후에도 이와 같은 문제가 발생했습니다. Xcode는 특정 오류 메시지를 생성하지 않고 컴파일 또는 인덱싱이 중단됩니다.
이 문제는 swift 파일에 있는 긴 표현 중 일부를 여러 개의 짧은 표현으로 분해함으로써 최종적으로 해결되었습니다.제 프로그램의 일부는 더 긴 문자열을 만들기 위해 여러 가지 문자열 변수를 결합합니다.추가 할당 연산자를 사용하여 단일 식으로 결합하려는 시도가 모두 실패했습니다.다음과 같은 작업을 수행함으로써(간단히) 효과를 낼 수 있었습니다.
var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB
이전 Xcode 버전에서 "표현식이 너무 복잡해서 합리적인 시간 내에 해결할 수 없었습니다. 표현식을 별개의 하위 표현식으로 분해하는 것을 고려해 보십시오."라는 오류를 여러 번 받은 것에서 이 아이디어를 얻었습니다.
도움이 되길 바랍니다.
저도 같은 문제 때문에 고생했어요.언급한 두 가지 솔루션(파생 데이터 삭제 및 .xcworkspace 삭제)을 시도해 보았지만 성공하지 못했습니다.또한 대부분의 코드를 조금씩 주석을 달면서 파일을 제거하는 작업을 천천히 해보았는데 거의 아무것도 남지 않고 색인이 여전히 멈춰있을 때까지 계속 시도했습니다.
저는 저에게 적합한 솔루션을 찾았습니다. 인덱싱에 문제가 없는 이전 Xcode Version 6.1(6A1030)로 프로젝트를 시작하고 이전에 사용하던 최신 Xcode Version 6.1(6A1052d)로 돌아가서 인덱싱을 수정하고 계속해서 잘 작동했습니다.
결론은 이것이 Xcode Version 6.1(6A1052d)의 버그라는 것으로 향후 출시와 함께 개선되기를 바랍니다.
문제는 가끔 다시 발생합니다. 매번 같은 해결책이 적용됩니다.이전 Xcode Version 6.1(6A1030)을 고수하는 것도 다른 해결책이 될 것으로 생각하지만 iOS 8.1을 실행하는 장치에서는 작동하지 않으며 최신 버그 수정도 없습니다.
저는 이것을 Xcode 8.3.3으로 시도해본 적이 있습니다.결과는 다음과 같습니다.
색인을 걸 수 있는 완벽하게 훌륭한 스위프트 코드를 작성할 수 있습니다.
인덱싱이 중단되면 중단됩니다.스위프트 코드를 색인이 걸리지 않는 것으로 다시 변경하는 것은 도움이 되지 않지만, 여전히 중단됩니다.
프로젝트를 종료하고 다시 시작하는 것은 그 상황에 도움이 되지 않습니다.
Xcode를 종료하고 다시 시작하는 것이 도움이 됩니다.인덱싱이 더 이상 중단되지 않습니다(즉, 코드를 다시 중단하지 않는 것으로 변경한 경우).
Mac을 다시 시작하는 것도 도움이 되지만 필요하지는 않습니다.
그 교수형은 완벽하게 멀쩡한 스위프트 코드에 의한 것입니다.내가 본 예시는
if let date = function1()
?? function2()
?? function3()
?? function4()
?? function5()
?? function6()
?? function7()
?? function8()
?? function9()
?? function10() {
return date
}
인덱싱이 중단됩니다.저는 대부분의 "??"에 대해 언급했습니다." (Xcode를 종료하고 다시 시작한 후) lines and fine.한 줄씩 차례로 언급하지 않았습니다.몇 줄 정도 있으면 괜찮았는데, 다음 줄은 댓글을 달면 걸려요.
코드를 바꾸는 것만이 도움이 됩니다.
제 Xcode에서 해결책은 모든 중복 창을 닫는 것이었습니다.어떤 이유에서인지 열려있는 많은 창들이 Xcode를 매우 느리게 만듭니다.
Xcode 11.5 (11E608c) 및 원래 질문 후 6년이 지난 지금도 여전히 동일한 문제입니다.이 질문에 사과에 표시를 해서 그들이 이 엉망인 상황을 볼 수 있게 했으면 좋겠습니다.이것은 큰 프로젝트(1000개 이상의 파일)이고 나는 시계 아래에 있었기 때문에 동결 지수를 알아차렸을 때 100개 이상의 파일이 변경되어 돌아갈 수 없습니다.
다 해봤어요
- 파생 데이터 삭제 및 구축
- xcode 다시 시작, mac 다시 시작
- 소스 제거 및 추가
- 사전 리터럴 등을 검색했습니다.
문제는 배열을 만드는 것이었습니다.
private var overlayColors: [UIColor] = [UIColor(hex: "#b71c1c"), UIColor(hex: "#4a148c"),
UIColor(hex: "#880e4f"), UIColor(hex: "#1de9b6"),
UIColor(hex: "#f50057"), UIColor(hex: "#311b92"),
UIColor(hex: "#f44336"), UIColor(hex: "#651fff"),
UIColor(hex: "#d500f9"), UIColor(hex: "#3d5afe"),
UIColor(hex: "#bf360c"), UIColor(hex: "#0d47a1"),
UIColor(hex: "#006064"), UIColor(hex: "#2979ff"),
UIColor(hex: "#ff6f00"), UIColor(hex: "#1a237e"),
UIColor(hex: "#795548"), UIColor(hex: "#004d40"),
UIColor(hex: "#00e676"), UIColor(hex: "#01579b"),
UIColor(hex: "#33691e"), UIColor(hex: "#827717"),
UIColor(hex: "#76ff03"), UIColor(hex: "#ffc400"),
UIColor(hex: "#e65100"), UIColor(hex: "#00b0ff"),
UIColor(hex: "#ff3d00"), UIColor(hex: "#616161"),
UIColor(hex: "#263238"), UIColor(hex: "#ff1744")]
불량 스위프트 파일을 발견하는데 도움이 된 것은 xcode freezed indexing을 했을 때 다음과 같은 단계를 거쳤습니다.
- open activity monitor -> "swift" process -> show process info -> files and ports 를 엽니다.그러면 이 프로세스에서 실행 중인 파일 목록이 제공됩니다. 사용자의 불량 파일 목록을 드릴다운합니다.
- 는 이 는 입니다 한 입니다 는 한
SOURCEKIT_LOGGING=3 /Applications/Xcode.app/Contents/MacOS/Xcode &> ~/Documents/xcode.log
레벨 3 장황하게 Xcode를 시작하고 로그 파일에 기록을 시작합니다. - 로그 파일에서 "my_project/Source/App/"의 swift files ex에 대한 마지막 항목을 검색합니다.
완전한 해결책은 아니지만 자세히 살펴보고 어디를 봐야 할지 아는 것이 도움이 됩니다.
결국 저는 이 문제를 "해결"했습니다. 비록 이것은 단지 해결책이지만 말입니다.
다른 프로젝트를 만들어 파일을 하나씩 추가했습니다.그리고 "아주 긴" 보기 controller.swift 파일을 발견했습니다.그런 다음 코드를 모듈로 분해하여 반복적으로 사용하는 코드를 다른 swift 파일의 기능으로 만들었습니다.그리고 긴 표현은 짧은 표현으로 나누어야 한다는 제안을 온라인으로 받아들였습니다.그러면 인덱싱이 작동하고 컴파일이 작동합니다.
그래서 지금은 해결했습니다.
그런데 이건 좀 아닌 것 같아요.Xcode IDE는 "매우 긴" 신속한 파일을 처리할 수 있는 수준 이상이어야 하며, 1500행만 처리해야 합니다.Xcode 6.1은 이미 Xcode 6.0.1에서 업그레이드되었지만 이것은 (오래전부터 존재했던) 확실히 버그라고 생각합니다.
저는 Xcode 앱을 삭제하고 다시 다운받아 설치했습니다.그것으로 문제가 해결되었습니다, 적어도 지금은 끝났습니다.
Xcode 인덱싱은 일반적으로 제안을 위한 코드에 대한 것이며 스토리 보드를 도와주는 것과 그 반대의 경우도 있습니다.하지만 xcode 프로젝트를 더 빠르게 진행하기 위해서 터미널을 통해 xcode 프로젝트를 끄거나 켤 수 있습니다.
기본값은 com.apple.dt입니다를 씁니다.XCode IDEIndexDisable 1 인덱싱 설정 com.apple.dt 씁니다 를 기본값 . 0XCode IDEIndex
그러나 RAM이 우수한 속도의 맥을 사용하는 것이 더 나은 접근법입니다.
그들이 알아낼 때까지 6.0.1로 돌아가는 것이 괜찮으시다면, 그것이 저에게 효과적이었습니다.저는 6.1과 6.1.1 모두에 대해 동일한 문제를 가지고 있었습니다.이제 괜찮아졌어요.6.2 나오면 한번 해볼게요.
애플 소프트웨어의 이전 버전은 공식 개발 사이트인 https://developer.apple.com/downloads/index.action 에서 확인할 수 있습니다.
이렇게 하면 현재 Xcode의 복사본을 먼저 삭제해야 합니다.
저는 같은 맥북 프로에서 빠른 파일로 Xcode 6.1.1을 사용하고 있습니다.
3D 스트링 배열에 행을 계속 추가하다 보니 갑자기 Xcode를 사용할 수 없게 되어 아무것도 할 수 없게 되었습니다.
6.1로 되돌리려고 하고 문제가 사라지기를 바랍니다.
Xcode 6.3.2에서 보고 있습니다.저는 정말로 출시된 지 1년 후에 컴파일러가 작동하기를 바랬지만, 아아.
위의 솔루션이 모두 효과가 없으면 코드에 구문 오류가 있는지 확인해 보십시오.리팩토링 과정에서 클로저를 추출했지만 매개변수를 한정하는 것을 잊었습니다.
let hangsInsteadOfError = { l, r in
return l.nameFirst < r.nameFirst
|| l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }
let fixingErrorAvoidsHang = { (l:User, r:User) -> Bool in
return l.nameFirst < r.nameFirst
|| l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }
만약 제가 스위프트에서 일하며 배운 것이 있다면, 그것은 공격적인 코드를 찾기 위해 너무 많이 뒤로 물러나는 것을 피하기 위해 점진적으로 노력하는 것입니다.
- 색인 상태가 "Indicator circle"입니까, "Progress bar"입니까?
- 만약 그것이 "Indicator circle"이라면, 그것은 그것이 이미 처음에 붙어 있었다는 것을 의미합니다.
- 다른 프로젝트를 열고 확인해 보십시오. 모두 동일한 프로젝트라면 시스템 문제라는 뜻입니다.
- 컴퓨터를 다시 시작하기만 하면 모든 것이 잘 될 것입니다.
저는 Xcode 8.2를 사용하며 이 문제로 끝이 났습니다.복잡한 튜플 변수를 정의한 후 시작되었습니다. 튜플의 하위 배열을 가진 튜플 배열입니다.튜플의 서브어레이가 프로그램적으로 계산되는 속성을 가지면 일이 정말 느려집니다.
몇몇 다른 답변들이 언급했듯이 색인 작업은 시간이 오래 걸리고, 변수의 유형을 추론하려는 것이라고 생각합니다.
저는 먼저 유형이 포함된 변수를 명확하게 정의하여 문제를 해결했습니다.속성을 업데이트할 때 변수를 정의할 때 계산하는 대신 먼저 계산하고 튜플에 할당합니다.
여기 코드 예시가 있습니다.
var sectionTuples: [(section: String, rows: [(name: String, subtitle: String)])] = []
let subtitle1: String = "" // something calculated dynamically
let subtitle2: String = "" // something calculated dynamically
sectionTuples = [(
section: "Section 1", rows: [
(name: "name1", subtitle: subtitle1),
(name: "name2", subtitle: subtitle2)
])]
결론은 Xcode가 복잡한 구조를 추론하지 못하게 한다는 것입니다.
저도 같은 문제를 가지고 있었습니다.제 X코드는 8.2.1입니다.하지만 제 경우에는 33개의 키-값 쌍으로 구성된 사전 배열을 만들고 싶었습니다.색인에 걸린 다음과 같은 방법으로 작업을 수행했습니다.
var parameter = [String : AnyObject]()
var finalArray = [parameter]
for item in listArray
{
parameter = ["A": item.a as AnyObject, "B": item.b as AnyObject, "C": item.c as AnyObject, ... , "Z": item.z as AnyObject]
finalArray.append(parameter)
}
다음이 제게 도움이 되었습니다.
var parameter = [String: AnyObject]()
var finalArray = [parameter]
for item in listArray
{
parameter["A"] = listArray.a as AnyObject
parameter["B"] = listArray.b as AnyObject
parameter["C"] = listArray.c as AnyObject
parameter["D"] = listArray.d as AnyObject
.
.
.
parameter["Z"] = listArray.z as AnyObject
finalArray.append(parameter)
}
Xcode 6.1.1로 업데이트할 수 있습니다.
그것은 우리를 위해 공식적으로 출시되어 색인 문제를 해결해 주고 있습니다.업데이트 설명에는 안정성 수정을 적용했다고 되어 있어 보다 안정적으로 동작할 가능성이 높습니다.
Xcode 6.2 베타를 통해 문제가 해결되었습니다.번개처럼 빠르지는 않지만 적어도 영원히 색인화되는 것은 아닙니다.베타는 일반 Xcode 설치 위에 설치되지 않으므로 베타가 마음에 들지 않으면 그냥 삭제할 수 있습니다.
언급URL : https://stackoverflow.com/questions/26494082/swift-xcode-index-freezing-or-slow
'programing' 카테고리의 다른 글
MS Visual C++에서 VLA(Variable Length Array) 활성화? (0) | 2023.09.16 |
---|---|
안드로이드 프로젝트에서 사용하지 않는 문자열을 쉽게 찾을 수 있는 방법이 있습니까? (0) | 2023.09.16 |
ASP에서 대용량 파일을 전달하는 방법NET 응답? (0) | 2023.09.16 |
데이터베이스 트리거가 필요합니까? (0) | 2023.09.11 |
Powershell Write-Host를 텍스트 파일에 추가 - 컴퓨터 이름 및 타임 스탬프 (0) | 2023.09.11 |