Może to tylko ja doświadczam takiej irytującej „funkcji”:
Po aktualizacji z Xcode 6.0.1 do Xcode 6.1 sytuacja uległa zmianie. Xcode 6.1 zawsze indeksuje projekt lub kompiluje pliki źródłowe. Projekt nie jest duży. Po prostu zawiera kilka plików Swift i AWS SDK 2.0 Cocoapods w obszarze roboczym. Myślę, że nie powinno to uniemożliwiać indeksowania i płynnej kompilacji całości. Próbowałem z kilkoma próbkami aws-sdk-ios-sampli, żeby zobaczyć, jak działa na nich Xcode 6.1, i skończyło się na tym samym czekaniu.
Jakie rozwiązania wypróbowałem do tej pory:
- Usuwanie „danych pochodnych” w Organizatorze i ponowne otwarcie obszaru roboczego. (nie można naprawić)
- „Pokaż zawartość pakietu” w pliku .xcodeproj i usuwanie .xcworkspace jak w ( Xcode 4 - niska wydajność )
Żaden z nich niestety nie zadziałał.
PS Może powinienem spróbować odtworzyć projekt? Ustawienia mojego komputera: MacBook Pro (Retina, 13-calowy, połowa 2014 r.), Pamięć 8 GB 1600 MHz DDR3, z Yosemite. (Myślę, że to wystarczy do uruchomienia tego małego projektu.)
Odpowiedzi:
Wypróbowałem wiele z powyższych sugestii, w tym dzielenie plików, instalowanie Xcode 6.2 beta i łamanie instrukcji konkatenacji ciągów. Ostatecznie udało mi się podzielić tablicę literalnych deklaracji słowników, których używałem do testowania danych, na wiele
.append
instrukcji.Poza tym, co jest warte, szósty wpis w tej tablicy jest przyczyną problemu; pięć działa dobrze.
źródło
init()
krok po kroku działa idealnie. Warto wspomnieć, że musiałem też usunąć.xcworkspace
plik.Jedynym działającym rozwiązaniem dla mnie jest usunięcie wszystkich danych pochodnych (nie tylko dla bieżącego projektu, po prostu wyczyszczenie całego folderu), a następnie ponowne uruchomienie Xcode.
Otwórz plik / preferencje w Xcode
Kliknij Lokalizacje po prawej stronie wyskakującego okienka
Kliknij ikonę małej strzałki obok „/Users/Mac/Library/Developer/Xcode/DerivedData"..... przeniesie Cię do folderu Xcode, który zawiera folder DerivedData (który zawiera wszystkie dane pochodne z Twoich poprzednich projektów .)
USUŃ folder DerivedData
źródło
Czy używasz CocoaPods? Dzisiaj natknąłem się na ten sam problem. (Przy użyciu xCode 6.1.1)
Aby rozwiązać ten problem, usunąłem wszystko w
~/Library/Developer/Xcode/DerivedData
,Pods
folder w katalogu mojego projektu i<project>.xcworkspace
.Następnie otworzyłem terminal, przeszedłem do katalogu mojego projektu i uruchomiłem
pod install
ponownie.źródło
Miałem dziś ten sam problem. Xcode 6.3.2, średni projekt Swift. W pewnym momencie zaczął indeksować i nigdy nie kończył indeksowania. Kod, który to spowodował, był słownikiem typu [String: [String]], a więc dict-key z tablicami łańcuchowymi jako wartościami. Miałem dwa z nich z kluczami od A do Z, a każdy z tych 26 wpisów zawiera tablicę ciągów z 5 do 10 ciągami.
Wyczyszczenie danych pochodnych nie pomogło. Dopiero wykomentowanie tych nakazów sprawiło, że to się powtórzyło.
Szczerze mówiąc, to śmieszne! Apple musi naprawić Xcode! Kompilacja projektów Swift jest już okropnie powolna, ale takie błędy są powstrzymywane. Nie mogę z tym prawidłowo wykonywać swojej pracy!
źródło
Dla tych, którzy nadal mają ten problem, jest to obejście, które mi się podobało, które zapobiega konieczności wchodzenia do obiektów jeden po drugim:
źródło
Dla mnie próbowałem wszystkich powyższych bez powodzenia; ale wszystko, co musiałem zrobić, to usunąć folder danych pochodnych, następnie otworzyć inny losowy projekt, poczekać, aż się zindeksuje i teraz mój oryginalny (nieprawidłowo działający) projekt działa!
Zrób światu programistów przysługę i uczyń swoje szybkie kompilatory open source - więc nie wszyscy jesteśmy powstrzymywani przez twoją niekompetencję.
źródło
Używam Xcode w wersji 7.3 (7D175)
Myślę, że mogłem znaleźć podstawowy problem. Tam, gdzie utknąłem w fazie indeksowania, w dwóch przypadkach:
Stworzyłem zamknięcie, które przypisałem do zmiennej i pominąłem sygnaturę typu. Myślę, że xcode miał problemy z tym krokiem wnioskowania typu. Jeśli dobrze pamiętam, jednym z argumentów był CGPoint, który ma przeciążony konstruktor. Moja hipoteza jest taka, że istnieje zbyt wiele możliwości tego, co moje zamknięcie mogłoby zaakceptować jako argumenty.
Refaktoryzowałem metodę fabryczną w taki sposób, że zamiast zwracać wystąpienia jednego typu, mogłaby zwrócić wystąpienia wielu typów ze wspólną klasą bazową. Wygląda na to, że gdziekolwiek użyłem metody fabrycznej, musiałem rzutować wynikowy obiekt na określony typ (za pomocą as? Lub przypisując go do zmiennej, która akceptuje określony typ). Ponownie krok wnioskowania o typie wydaje się być uszkodzony.
Wydaje się, że to samo dzieje się z deklaracjami słownikowymi, o których wspominali wcześniejsi ludzie. Złożyłem raport o błędzie w Apple.
źródło
Ten sam problem wystąpił po aktualizacji do wersji 6.1. Xcode utknąłby podczas kompilacji lub indeksowania bez generowania określonego komunikatu o błędzie.
Problem został ostatecznie rozwiązany przez rozbicie niektórych dłuższych wyrażeń w szybkich plikach na wiele krótszych wyrażeń. Część mojego programu łączy wiele różnych zmiennych łańcuchowych, tworząc dłuższy ciąg. Próby połączenia ich w jednym wyrażeniu i użycie operatora przypisania dodawania nie powiodły się. Udało mi się to zrobić, wykonując coś podobnego do następującego (uproszczone):
Wpadłem na ten pomysł, ponieważ wielokrotnie otrzymałem następujący błąd w poprzedniej wersji Xcode „Wyrażenie było zbyt złożone, aby można było je rozwiązać w rozsądnym czasie; rozważ podzielenie wyrażenia na odrębne wyrażenia podrzędne”.
Mam nadzieję że to pomoże
źródło
Zmagałem się z tym samym problemem. Wypróbowałem dwa wymienione rozwiązania (usuwanie danych pochodnych i usuwanie .xcworkspace) bez powodzenia. Próbowałem też powoli komentować większość kodu krok po kroku i usuwać pliki, aż prawie nic nie zostało, a indeksowanie nadal się blokowało.
Znalazłem rozwiązanie, które dla mnie zadziałało, otworzyłem projekt ze starszą wersją Xcode 6.1 (6A1030), która nie miała problemu z indeksowaniem, a następnie wróciłem do najnowszej wersji Xcode 6.1 (6A1052d), której używałem wcześniej, a indeksowanie było naprawiony i nadal działa dobrze.
Mój wniosek jest taki, że jest to błąd w Xcode w wersji 6.1 (6A1052d), który, mam nadzieję, poprawi się w przyszłych wydaniach.
Problem wraca raz na jakiś czas, za każdym razem działa ta sama poprawka. Myślę, że innym rozwiązaniem byłoby po prostu trzymanie się starszej wersji Xcode 6.1 (6A1030), ale nie będzie działać z urządzeniami z systemem iOS 8.1 i nie będzie miało najnowszych poprawek.
źródło
Próbowałem tego z Xcode 8.3.3. Oto moje wyniki:
Możesz napisać doskonale dobry kod Swift, który spowoduje zawieszenie indeksowania.
Gdy indeksowanie się zawiesza, zawiesza się. Zmiana kodu Swift z powrotem na coś, co nie spowodowałoby zawieszenia się indeksowania, nie pomaga, nadal się zawiesza.
Zamknięcie projektu i ponowne otwarcie nie pomaga w tej sytuacji.
Pomaga zamknięcie Xcode i ponowne uruchomienie. Indeksowanie nie będzie się już zawieszać (to znaczy, jeśli zmienisz kod z powrotem na coś, co go nie zawiesza).
Ponowne uruchomienie komputera Mac również pomaga, chociaż nie jest potrzebne.
Zawieszanie jest spowodowane doskonale precyzyjnym kodem Swift. Przykład, jak wyglądałem
Indeksowanie zawiesiłoby się. Skomentowałem większość „??” linie i było dobrze (po zamknięciu i ponownym uruchomieniu Xcode). Odkomentowano jeden wiersz po drugim. Przy pewnej liczbie wierszy było dobrze, a odkomentowanie następnego wiersza spowodowałoby zawieszenie się.
Jedyną rzeczą, która najwyraźniej pomaga, jest zmiana kodu.
źródło
W moim Xcode rozwiązaniem było zamknięcie wszystkich zbędnych okien. Z jakiegoś powodu wiele otwartych okien powoduje, że Xcode jest bardzo powolny.
źródło
Wreszcie „rozwiązałem” problem, chociaż jest to tylko obejście.
Stworzyłem kolejny projekt i po kolei dodawałem do niego pliki. Wtedy zauważyłem „bardzo długi” plik viewcontroller.swift. Następnie rozbiłem jego kody na moduły i zamieniłem te wielokrotnie używane kody na funkcje w innym szybkim pliku. A także skorzystałem z sugestii online, że długie wyrażenie powinno zostać podzielone na krótsze. Następnie działa indeksowanie i kompilacja.
Więc na razie mam to „rozwiązane”.
ALE, nie sądzę, żeby to było w porządku. Środowisko Xcode IDE powinno być więcej niż zdolne do obsługi mojego „bardzo długiego” pliku szybkiego, tylko 1500 linii. Uważam, że jest to zdecydowanie błąd (istniejący od dawna), chociaż Xcode 6.1 jest już aktualizacją z Xcode 6.0.1.
źródło
W moim przypadku usunąłem aplikację Xcode, pobrałem ją ponownie i zainstalowałem. To rozwiązało problem, przynajmniej teraz.
źródło
Indeksowanie Xcode zwykle dla twojego kodu w celu uzyskania sugestii i automatycznego uzupełniania, między innymi pomoc w tworzeniu scenorysów i odwrotnie. Ale aby przyspieszyć projekt xcode, możesz go wyłączyć / włączyć za pośrednictwem terminala
Wyłącz indeksowanie
domyślne ustawienia napisz com.apple.dt.XCode IDEIndexDisable 1 Włącz domyślne indeksowania zapisuj com.apple.dt.XCode IDEIndexDisable 0
Ale lepsze podejście do korzystania z szybkiego Maca z dobrą pamięcią RAM.
źródło
Xcode 11.5 (11E608c) i nadal te same problemy, 6 lat po pierwotnym pytaniu. Chciałbym móc „zaznaczyć” jabłko w tym pytaniu, żeby mogli zobaczyć ten bałagan. Jest to duży projekt (> 1000 plików) i byłem pod zegarem, więc kiedy zauważyłem zamarzający indeks, zmieniłem ponad 100 plików i nie mogę wrócić.
Próbowałem wszystkiego:
Problem polegał na utworzeniu tablicy:
To, co pomogło mi odkryć zły plik Swift, to kiedy xcode zawiesił indeksowanie, wykonałem następujące kroki
SOURCEKIT_LOGGING=3 /Applications/Xcode.app/Contents/MacOS/Xcode &> ~/Documents/xcode.log
który uruchomi Xcode z pełnym poziomem 3 i rozpocznie rejestrowanie w pliku dziennika.Nie jest to pełne rozwiązanie, ale warto przeanalizować i wiedzieć, gdzie szukać.
źródło
Jeśli nie masz nic przeciwko powracaniu do wersji 6.0.1, dopóki tego nie wymyślą, to właśnie zadziałało. Miałem ten sam problem z 6.1 i 6.1.1. Teraz jestem dobry. Spróbuję 6.2, kiedy wyjdzie.
Poprzednie wersje oprogramowania Apple można znaleźć na ich oficjalnej stronie dla programistów, tutaj: https://developer.apple.com/downloads/index.action
Jeśli to zrobisz, najpierw usuń bieżącą kopię Xcode.
źródło
Używam Xcode 6.1.1 z szybkimi plikami na tym samym, dokładnym MacBooku Pro.
Kiedy dodawałem wiersze do tablicy ciągów 3D, Xcode nagle stał się bezużyteczny i teraz nie mogę nic zrobić.
Spróbuje powrócić do wersji 6.1 i miejmy nadzieję, że problem zniknie.
źródło
Widzę to w Xcode 6.3.2. Naprawdę miałem nadzieję, że rok po wydaniu kompilator będzie działał, ale niestety.
Jeśli żadne z powyższych rozwiązań nie działa, spróbuj sprawdzić kod pod kątem błędów składniowych. Podczas refaktoryzacji wyodrębniłem zamknięcie, ale zapomniałem zakwalifikować parametrów:
Jeśli nauczyłem się czegokolwiek podczas pracy w Swift, jest to praca przyrostowa, aby uniknąć konieczności cofania się zbytnio w celu znalezienia niewłaściwego kodu.
źródło
źródło
Używam Xcode 8.2 i również skończyłem na tym problemie. Zaczęło się po zdefiniowaniu złożonej zmiennej krotki - tablicy krotek z podtablicą krotki. Sprawy stają się naprawdę powolne, gdy podtablica krotki ma właściwość obliczaną programowo.
Jak zauważono w innych odpowiedziach, indeksowanie trwa wiecznie i wydaje mi się, że próbuje wywnioskować, jakie typy są zmienne.
Najpierw rozwiązałem problem, jasno definiując zmienną z zawartymi typami. Podczas aktualizacji właściwości najpierw ją obliczam, a następnie przypisuję do krotki, zamiast obliczać przy definiowaniu zmiennej.
Oto przykładowy kod.
Najważniejsze jest to, że nie pozwala Xcode na wnioskowanie o złożonych strukturach.
źródło
Miałem ten sam problem. Mój Xcode to 8.2.1. Ale w moim przypadku chciałem stworzyć tablicę słownika z 33 parami klucz-wartość. Robiłem w następujący sposób, który utknął w indeksowaniu:
Pracowały dla mnie następujące:
źródło
Miałem również ten problem i rozwiązałem go, usuwając / zmieniając wyrażenia za pomocą operatora „+”.
Zmieniłem to:
Do tego:
To rozwiązało problem.
Moja maszyna ma maksymalny MBP pod koniec 2013 roku
źródło
Możesz chcieć zaktualizować do Xcode 6.1.1
Został oficjalnie wydany i rozwiązany dla nas problem indeksowania. W opisie aktualizacji jest napisane, że zastosowali poprawki stabilności, więc jest bardzo prawdopodobne, że będzie zachowywać się w bardziej stabilny sposób.
źródło
Wersja beta Xcode 6.2 rozwiązała problem za mnie. Nie błyskawicznie, ale przynajmniej indeksowanie nie trwa wiecznie. Wersja beta nie instaluje się ponad zwykłą instalacją Xcode, więc jeśli nie podoba ci się beta, możesz ją po prostu usunąć.
Różne pliki do pobrania Xcode, w tym wersja beta>
źródło
Miałem takie wyrażenia jak:
również
Chodzi o to, aby przepisać plik tak, aby zawierał tylko wyrażenia z poziomu przedszkola, a problem z indeksowaniem zniknie.
źródło