Xcode tworzy scenorys po każdym naciśnięciu klawisza

145

Mój projekt Xcode wykorzystujący scenorys, który niedawno wszedł w bardzo dziwny stan: Xcode buduje cały projekt, a zwłaszcza scenorys po każdym naciśnięciu klawisza . Nie znalazłem powodu takiego zachowania ani w moim projekcie, ani w moim projekcie, ani w ustawieniach w Xcode (może po prostu nie mogłem ich znaleźć?) Nie trzeba dodawać, że ta "funkcja" sprawia, że ​​praca nad moim projektem jest prawie niemożliwa ponieważ procesor nieustannie zajmuje się przebudowywaniem scenorysu, kiedy piszę nowy kod. Czy ktoś to widział?

MrTJ
źródło

Odpowiedzi:

415

Jest to spowodowane IB_DESIGNABLEdefinicjami w źródłowych plikach nagłówkowych. Prawdopodobnie stwarza to problem tylko wtedy, gdy plik nagłówkowy zawierający IB_DESIGNABLE(nawet niejawnie) jest dołączony do pliku źródłowego, który aktualnie edytujesz.

Nie znalazłem ostatecznego rozwiązania, jak wyłączyć, IB_DESIGNABLEa tym samym kompilować scenorys i pliki źródłowe w sposób ciągły. Byłbym wdzięczny za flagę Xcode, aby tymczasowo to wyłączyć. Próbowałem też otaczającej IB_DESIGNABLEz #ifdefmakr, ale są one uważane nawet jeśli #ifdefFALSE. Komentowanie jednego po drugim IB_DESIGNABLEpomaga, ale nie jest to wykonalne rozwiązanie przy wielu przypadkach IB_DESIGNABLE.

Aktualizacja

W końcu znalazłem szybki sposób na uniknięcie tego irytującego zachowania. Po otwarciu serii ujęć w aktywnym oknie wyłącz opcję „Automatycznie odświeżaj widoki” w menu Edytor. Spowoduje to zatrzymanie aktualizowania widoków w edytorze scenorysów, które używają niestandardowego kodu, a tym samym znacznie przyspieszy rozwój. Gdy będziesz potrzebować ponownie kompilacji just-in-time, aby uzyskać wizualny podgląd kodu niestandardowego, włącz tę opcję ponownie (wydaje się, że musisz ponownie otworzyć scenorys, aby znów działał).

wprowadź opis obrazu tutaj

Możesz chcieć dodać przypisanie klawisza do polecenia, takie jak polecenie-opcja-kontrola-A, aby łatwo włączać / wyłączać zachowanie. Aby dodać powiązanie klawiszy w Xcode, dotknij polecenia-przecinka, aby wyświetlić preferencje, wybierz kartę Wiązania klawiszy, użyj paska wyszukiwania, aby znaleźć polecenie, a następnie kliknij dwukrotnie prawy obszar, aby dodać żądane naciśnięcie klawisza.

Podejście „zostaw to”

Alternatywnie wyłącz opcję „Automatycznie odświeżaj widoki” i nigdy jej nie włączaj .

Wykonaj wygodne naciśnięcie klawisza „Odśwież wszystkie widoki” , powiedz polecenie-opcja-shift-R

wprowadź opis obrazu tutaj

Podczas pracy wystarczy od czasu do czasu lub w razie potrzeby dotknąć polecenie-opcja-shift-R. Zwykle konieczne jest dotknięcie polecenia-opcja-shift-R podczas pracy nad scenorysem.

MrTJ
źródło
10
Nie wiem, jak to się
włączyło
1
Xcode 7.3 stale buduje projekt, gdy aktywny edytor ma otwarty scenorys. Na szczęście ta odpowiedź rozwiązała mój problem. Apple wciąż mi imponuje ...
Oleksii Taran
24
Rozwiązany problem z Xcode w wersji 8.2.1 (8C1002). Kiedy znalazłem tę odpowiedź i rozwiązało to mój problem, nie mogłem powstrzymać łez. Spędziłem 2 dni w koszmarze, usuwając dane pochodne, czyszcząc projekt, ponownie instalując wszystkie strąki. (Myślę, że nadszedł czas na jabłko, przekaż cały rozwój IDE do Jetbrains. To, co robią jabłko, to po prostu gówno! Dziękuję!
korgx9
2
Wielkie dzięki, ciągłe budowanie xcode naprawdę mnie denerwuje.
Chauyan
8
To rozwiązanie działa również na Xcode 9. Wyłącz opcję „Automatycznie odświeżaj widoki” w Storyboard i nie będzie już ciągłego ponownego tworzenia. Dziękuję bardzo!
PL
7

Miałem ten problem i zaakceptowana odpowiedź nie zadziałała.

Problem polegał na tym, że zawsze utrzymuję scenorys w jego własnej karcie w XCode, aby móc szybko uzyskać do niego dostęp.

Jedynym sposobem, w jaki mogłem to naprawić, było zamknięcie tej karty lub wybranie innego pliku (jak normalny plik kodu), a następnie zamknięcie i ponowne otwarcie XCode. Od tego czasu nie był już odbudowywany po każdym naciśnięciu klawisza.

Ostrzegam jednak, że jeśli musisz otworzyć scenorys, aby wprowadzić zmiany, ten problem może czasami pojawić się ponownie i będę musiał powtórzyć powyższy proces.

Nie mogę się doczekać, aż Apple to naprawi, ponieważ jest to naprawdę bardzo frustrujące!

(ノ ಠ 益 ಠ) ノ 彡 ┻━┻

Nick Kirsten
źródło