Jak opróżniać pamięć podręczną i czyścić wszystkie cele Xcode 4 i nowsze wersje


238

Jonathan sugeruje tutaj: Xcode Obejmuje pliki .xib, które zostały usunięte! że wyczyszczenie wszystkich celów i opróżnienie pamięci podręcznej rozwiąże problem z Xcode, w tym usuniętymi plikami .xib, ale nie mogę znaleźć sposobu na opróżnienie pamięci podręcznej w Xcode 4.

Jak to zrobić w Xcode 4?


Oto moje [rozwiązanie skryptu powłoki] [1], które usuwa dane pochodne, zarówno dla xCode 5, jak i 6. [1]: stackoverflow.com/a/27977848/1231948
Sheamus

Odpowiedzi:


514

Command-Option-Shift-K, aby wyczyścić folder kompilacji. Jeszcze lepiej, ręcznie zamknij Xcode i wyczyść ~ / Library / Developer / Xcode / DerivedData . Usuń całą jego zawartość, ponieważ istnieje błąd, w którym Xcode uruchomi starą wersję twojego projektu, który gdzieś tam jest. (Xcode 4.2 wyświetli folder Dane pochodne: wybierz Okno> Organizator i przejdź na kartę Projekty. Kliknij strzałkę w prawo po prawej stronie nazwy folderu Dane pochodne).

W symulatorze wybierz kolejno Symulator iOS> Resetuj zawartość i ustawienia.

Wreszcie, dla kompletności, możesz usunąć zawartość folderów / var / ; tam też dzieje się trochę buforowania.

OSTRZEŻENIE: Usunięcie folderów / var / może powodować problemy, a po tym może być konieczna naprawa lub ponowna instalacja systemu operacyjnego.

EDYCJA: Właśnie dowiedziałem się, że jeśli boisz się zmagać z / var / folder / , możesz użyć następującego polecenia w Terminalu, aby usunąć w bardziej ukierunkowany sposób:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

EDYCJA: W przypadku niektórych problemów związanych z Swift uznałem za przydatne usunięcie ~ / Library / Caches / com.apple.dt.Xcode . W ten sposób tracisz dużo, np. Zapasowe kopie pobranych zestawów dokumentów, ale może być tego warte.


6
Fajnie, czyszczenie ścieżki: Library / Developer / Xcode / DerivedData + resetowanie zawartości i ustawień symulatora działa!
Tieme,

10
Wygląda na to, że ścieżka znajduje się w moim katalogu domowym (uwaga tyldy): ~ / Library / Developer / Xcode / DerivedData Być może było to oczywiste dla innych, ale na wypadek, gdyby ktoś miał problem ...
Victor Van Hee

37
Hehe, będąc übern00b, usunąłem / var / db, gdzie znalazłem coś, co pochodzi z Xcode / mojego projektu. Kosztowało mnie to pięć godzin dziennikowania w systemie plików, naprawy i ponownej instalacji Lion itp. Uwaga! :-)
Jonas Byström

4
@Jonas Czułem się zmuszony do dodania ostrzeżenia do porady „usuń / var / foldery”. To nie jest dla niewtajemniczonych!
LearnCocos2D,

7
Nie uruchamiaj rm -rf / var / folderów z sudo, w przeciwnym razie naprawisz jak ja :)
Josip B.

68

Command-Option-Shift-K powinien to zrobić. Alternatywnie, przejdź do menu produktu, naciśnij klawisz opcji, teraz opcja „Wyczyść” zmieni się na „Wyczyść folder kompilacji ...” wybierz tę opcję.


Nie, szkoda ... właśnie zmieniłem i zmieniłem nazwę pliku xib i wyczyściłem aplikację, jak powiedziałeś, ale nadal ładuje się dobrze bez błędów.
Tieme

2
Wow, nigdy nie był nowy temat tej sztuczki Alt Alt w menu Mac OS X !!! To naprawdę definiuje znaczenie „Alt” ernate.
trusktr

19

Oprócz wykonania poniższych czynności może wystąpić ten problem, jeśli pliki Storyboard aplikacji są zlokalizowane. Najpierw wykonaj każdą z tych czynności:

  • Czysta kompilacja
  • Zresetuj symulator
  • Uruchom ponownie Xcode
  • Usuń DerivedDatafolder w ~ / Library / Developer / Xcode / DerivedData
  • Restart komputera

To, co w końcu zadziałało, to ponowne wygenerowanie plików lokalizacji scenorysu i usunięcie angielskiej lokalizacji (co było niepotrzebne, ponieważ podstawowe ustawienia regionalne to angielski). Aby ponownie załadować ciągi Storyboard, zapoznaj się z tą odpowiedzią na StackOverflow .

Zauważyłem, że nietekstowe części mojej Storyboard są aktualizowane, ale nie zlokalizowany tekst. Jeśli masz lokalizację w swojej aplikacji, zalecamy sprawdzenie, czy Twoje lokalizacje są zaktualizowane (nawet jeśli są to .stringspliki).


2
Usunąłem zawartość (nie cały folder) folderów / var / dla mnie! Jeśli szukasz /var/folders..Wybierz Idź do folderu z menu Idź Findera i wpisz / var / jako lokalizację folderu.
Patricia

+1 w instrukcji / var / foldery ... czyszczenie i usuwanie DerivedData działało częściowo, ale to
załatwiło sprawę

1
1. Wyczyść kompilację 2. Zresetuj symulator 3. Uruchom ponownie Xcode, który rozwiązał mój problem.
Alan Dong

OSTRZEŻENIE! Uwaga: usunięcie zawartości /var/folders/może powodować poważne problemy i może spowodować konieczność ponownej instalacji OSx z konsoli odzyskiwania!
Magnus W

18

Znalazłem inny sposób oprócz polecenia + opcja + Shift + K. W XCode 4.2 znajduje się organizer, który można otworzyć za pomocą ikony w prawym górnym rogu. Stamtąd możesz wyczyścić wszystkie archiwa i zapisane opcje projektu. Pomogło mi to w mojej sytuacji (widziałem stare usunięte pliki w pakiecie głównym).


3
Tak, to jest łatwiejsze niż ręczne czyszczenie ~ / Library / Developer / Xcode / DerivedData ręcznie
Tieme

10

Wyciągam włosy z głowy, ponieważ myślałem, że mam ten sam problem. Podczas tworzenia aplikacji nie uzyskałem takiego samego wyniku na moim iPhonie, jak na symulatorze.

Problem polegał na tym, że jakoś stworzyłem zlokalizowaną wersję pliku MainStoryboard.storyboard. Więc kiedy uruchomiłem aplikację na telefonie, pokazała wersję duńską ... a symulator pokazał wersję angielską.

Tak, jestem nowy! :)


2
Miałem podobne problemy. Czy polecenie-opcja-shift-K bezskutecznie. Usunięto ... DerivedData, brak rozwiązania. Okazało się, że zmiana XIB najwyższego poziomu zmienia tylko wersję angielską, a ja testowałem z holenderską wersją XIB. Westchnienie ...
fishinear

1
Pamiętaj też, że istnieją sposoby zlokalizowania aplikacji, w których tworzone są osobne pliki tekstowe dla każdego języka. W takich przypadkach zmiana .xib nic nie robi.
dandan78

7

Aby usunąć wszystkie pochodne dane i moduł pamięci podręcznej, /var/foldersużyj tego małego skryptu ruby .

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*")
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
FileUtils.rm_rf derivedDataFolder + moduleCache

To właśnie rozwiązało fatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/dla mnie błąd.


1
Widoczny błąd powodujący „błąd krytyczny: zniekształcony lub uszkodzony plik AST:„ Nie można załadować modułu ”oraz awaria delikatnego rozwiązania sugerowanego przez Xcode, nadal występuje w Xcode 6.1. Rozwiązanie ręcznego wyjścia z Xcode i ręcznego czyszczenia ~ / Library / Developer / Xcode / DerivedData ręcznie nadal działa. Nie musiałem wszystkiego tam czyścić; tylko dwa podfoldery: ModuleCache i podfolder, którego nazwa jest istotna dla projektu powodującego problem.
Jerry Krinock

5

Miałem pewne problemy z awarią Xcode 5.1, kiedy otworzyłem okno dokumentu.

Nie jestem tego pewien, ponieważ aktualizowałem również zestawy dokumentów, kiedy otworzyłem okno.

Cóż, w Xcode 5 katalog modułów znajduje się teraz w folderze danych pochodnych, którego z oczywistych względów nie usunąłem. Usunąłem zawartość ~ / Library / Developer / Xcode / DerivedData / ModuleCache oraz ~ / Library / Preferences / com.apple.Xcode.plist i wszystko wydaje się działać po ponownym uruchomieniu Xcode.


1

Podczas korzystania z „Modelu danych” w inspektorze są dostępne opcje generowania klas, dla mnie tak było, ponieważ istniała już klasa o istniejącej nazwie.

Codegen: rozwiązałem to dla mnie.

wprowadź opis zdjęcia tutaj


1

Moje „DerivedData” z Xcode 10.2 i Mojave były tutaj:

MacHD / Users / [MyUser] / Library / Developer / Xcode


0

Musisz uważać na plik xib. Próbowałem wszystkich powyższych i nic nie działało dla mnie. Używałem niestandardowych przycisków UIB zdefiniowanych w xib i zdałem sobie sprawę, że może to być związane z faktem, że przypisałem tam atrybuty, które nie zmieniały się programowo. Jeśli zdefiniowałeś tam obrazy lub tekst, usuń je. Kiedy to zrobiłem, moje zmiany programowe zaczęły obowiązywać.


0

Oto moje rozwiązanie skryptu powłoki , które usuwa dane pochodne i czyści zasoby buforowane projektu dla Xcode 4, 5 i 6.

Czasami po prostu wywołanie rm -rf w katalogu danych pochodnych pozostawia trwały plik lub dwa, ale mój skrypt zapętla się, dopóki wszystkie pliki nie zostaną usunięte.


0

Próbowałem prawie wszystkiego, ale nie mogłem nic poradzić, co pomogło mi wyłączyć SIP (System Integration Protection) n to działa, nie wiem, co się dzieje, kiedy i jak, ale gdzieś plik systemowy się gdzieś myli i powoduje to ... chociaż może istnieć ryzyko oczywiście wyłączyć to

Oto jak

1. Włącz komputer Mac i przytrzymaj klawisze [polecenie] + [R], aby uzyskać dostęp do partycji odzyskiwania.

2. Na partycji odzyskiwania kliknij Narzędzia na pasku menu, a następnie wybierz Terminal.

3.Wprowadź następującą komendę w Terminalu i naciśnij klawisz Enter, aby ją wykonać: csrutil disable

4.Po wykonaniu polecenia wyjdź z terminalu i uruchom ponownie komputer Mac. Po ponownym zalogowaniu się do systemu OS X protokół SIP zostanie wyłączony.


1
Brzmi naprawdę ryzykownie. Co robi SIP?
Tieme,

Ochrona integralności systemu chroni pliki systemowe i katalogi oznaczone do ochrony.
Zasadniczo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.