Xcode 4 „Wyczyść” a „Czysty folder kompilacji”

83

Dochodzisz w pewnym momencie rozwoju każdej aplikacji, że to, co widzisz w symulatorze, nie pasuje do tego, co Twoim zdaniem powinno się wydarzyć. W większości są to błędy ludzkie - a przynajmniej tak jest w większości moich przypadków ;-) - ale czasami Xcode po prostu „zgubił trop”, a przynajmniej tak się wydaje. Dowiedziałem się, że opcje menu Clean(Shift + Cmd + K) i Clean Build Folder…(Option + Shift + Command + K) mogą pokazać różnicę między twoim błędem a Xcode.

Moje pytanie brzmi jednak:

Co robi Cleanpolecenie, a czego nie, co pozostawia powód Clean Build Folder…do istnienia? Kiedy powinienem wybrać jeden z nich, dlaczego nie zawsze czyścić cały folder?

epologee
źródło
Możesz znaleźć odpowiedzi w tym potencjalnie zduplikowanym pytaniu .
Michael Dautermann
1
Mogą tam być jakieś ukryte wskazówki, ale nie jest to zduplikowane pytanie. Mój dotyczy różnic między czystym i czystym folderem kompilacji, dwoma bardzo podobnymi poleceniami. Ale dzięki za ostrzeżenia.
epologee

Odpowiedzi:

92

Clean…czyści foldery dla aktualnie wybranego celu.
Clean Build Folder…czyści foldery wszystkich celów.

Oliver
źródło
5
Jest to niejednoznaczne z tym apostrofem we „folderach wszystkich celów”. Czy masz na myśli „foldery dla wszystkich celów, czy też są jakieś inne foldery powiązane z wybranym celem?”
Michael Forrest
Ta odpowiedź nie jest kompletna. Clean Build Folderrozwiązuje problemy w projektach z jednym celem.
Basil Bourque,
94

Jeśli wybierzesz Cleanz menu Produkt, XCode usunie pliki w każdym folderze w folderze Build, jeśli wybierzesz Clean Build Folder, usunie cały folder Build.

Po Cleankomendzie:

wprowadź opis obrazu tutaj Po Clean Build Folderkomendzie:

wprowadź opis obrazu tutaj

Myślę, że powinieneś wybrać, Clean Build Folderkiedy chcesz zbudować plik binarny, który chcesz udostępnić w AppStore, kiedy pomieszałeś z projektem lub gdy Twoja aplikacja nie działa z „nieznanego” powodu, w przeciwnym razie użyj Clean.

Mam nadzieję, że odpowiedziałem na Twoje pytanie: D

Aluminium
źródło
5
Przepraszam, że jestem sceptyczny, ale to wydaje się dziwne. Czy chcesz powiedzieć, że jedyna różnica między nimi polega na tym, że jeden usuwa foldery, a drugi zachowuje foldery, ale usuwa całą zawartość? Jaka byłaby różnica w posiadaniu czterech pustych folderów? Jest jednak zauważalna różnica między czyszczeniem, a czasem czyszczeniem folderów kompilacji ...
jowie
3
Tak, to jedyna różnica. Osobiście używam „Clean” przed utworzeniem aplikacji dla symulatora iOS lub gdy mam dziwne problemy z kodem i / lub XCode i „Clean Build Folder”, gdy chcę opublikować aplikację w App Store lub gdy chcę mieć pewność że moja aplikacja jest tworzona od podstaw bez pamięci podręcznych.
Aluminium
4
Czy to tylko ja, czy „Clean Build Folder” jest szybszy niż „Clean”?
Nicolas Miari
Coś się zmieniło w Xcode 8, Buildfolder jest przechowywany po Clean Build Folder.... Oczywiście Clean Build Folder...jest bardziej kompletny niż Clean. Jednak myślę, że usunięcie ~/Library/Developer/Xcode/DerivedData/xxx-ABCDfolderu jest potrzebne w niektórych przypadkach, na przykład Xcode nie działa poprawnie, gdzie xxx to nazwa twojego projektu lub obszaru roboczego.
DawnSong
Zawsze uwielbiam, gdy ludzie wracają do starego pytania i odpowiedzi, które są popularne, i dają bardzo jasny przykład i wyjaśnienie
Cacoon
5

Od Xcode 10 „Clean” faktycznie zniknął. Apple mówi tutaj :

„Nowy system kompilacji używa zachowania„ czysty folder kompilacji ”. Starsze zachowanie„ czystego ”nie jest obsługiwane”.

user3806037
źródło
4

Jeśli wybierzesz „Wyczyść”, Xcode usunie pliki w każdym folderze (np. Produkty, Pośrednie) w folderze Build dla bieżącego celu. Pliki dla innych celów pozostają.

Jeśli wybierzesz „Clean Build Folder”, Xcode usunie cały folder Build , więc nic nie zostanie.

W większości przypadków „Wyczyść” będzie działać z „nieznanych” powodów, ale nadal musisz „Wyczyść folder kompilacji”, ponieważ Xcode nie usunie plików w folderze dołączanym w folderze Produkty .

Mindy
źródło
0

Niektóre pliki w ~/Library/Developer/Xcode/DerivedData/xxx-ABCDdomenie, gdzie xxx to nazwa Twojego projektu lub obszaru roboczego, zostały usunięte po Tobie Cleanlub Clean Build Folder.... Oczywiście Clean Build Folder...usunie więcej plików niż Cleanzrobi. Myślę jednak, że usunięcie folderu, o którym wspomniałem wcześniej, jest potrzebne w niektórych przypadkach, na przykład twój Xcode nie może działać poprawnie.

Nawiasem mówiąc, coś się zmieniło w Xcode 8, Buildfolder pozostaje taki sam poClean Build Folder...

DawnSong
źródło