Xcode 6.3 zawiesza się / zawiesza po otwarciu pliku XIB

82

Po uaktualnieniu do Xcode 6.3 (wersja wydana) Xcode zawiesza się teraz za każdym razem, gdy otwieram plik XIB / Storyboard zawierający IB_DESIGNABLEwidokktóry używa niestandardowej czcionkidla dowolnych projektów i zawiera niestandardową czcionkę (niekoniecznie musi mieć odniesienie do tej czcionki w tym XIB / Storyboard). Zawieszenie następuje po otwarciu pliku .xib, a następnie próbie przełączenia się na inny plik. Xcode zawiesza się i musi zostać wymuszone.

Otworzyłem raport o błędzie w Apple. (Bug 20483867).

W tej chwili mam dwie obejścia.

  1. Pobierz i używaj Xcode 6.2 od Apple.
  2. Usuń znaczniki IB_DESIGNABLE z plików nagłówkowych widoku niestandardowego.

Jest to prawdopodobnie błąd Apple, ale czy ktoś ma lepsze obejście lub rozwiązanie?

picciano
źródło
7
To samo tutaj, Xcode zawiesza się całkowicie, kiedy próbuję przełączyć się z Interface Builder do dowolnego innego pliku. Usunięcie WSZYSTKICH IB_DESIGNABLE atrybutów rozwiązuje ten problem. Wrócę teraz do 6.2 fow ...
maxkonovalov
1
To samo tutaj. Usunięcie folderu ~ / Library / Saved Application State / com.apple.dt.Xcode.savedState pomaga mi, ale kiedy próbuję ponownie otworzyć scenorys, mam ten sam problem.
tikhop
Możesz także spróbować usunąć zaznaczenie opcji „Automatycznie odświeżaj widoki”, aby sprawdzić, czy zapobiega to awarii? Jeśli tak, możesz sprawdzić, czy możesz „Odśwież wszystkie widoki” bez blokowania.
nhgrif
@nhgrif Gdzie jest to ustawienie?
picciano,
2
Firma Apple zażądała danych wyjściowych z sysdiagnose. Będę dostarczał aktualizacje w miarę postępu.
picciano

Odpowiedzi:

26

Xcode 6.3.1 rozwiązuje problem z niestandardowymi czcionkami i IB_DESIGNABLEwidokami w scenorysie. Zaktualizuj przez Mac App Store i powinieneś być dobry.

Josh Brown
źródło
28

Zasugerowałem już zmianę w celu dokładniejszego opisu .

Dzieje się tak tylko wtedy, gdy projekt zawiera niestandardową czcionkę. Zablokuje się, odwiedzając dowolny Storyboard / XIB, który zawiera niestandardowy widok IBDesignable, nawet nie odwołując się do tej czcionki w swoim Storyboard / XIB.

Moim obejściem jest użycie starszej wersji Xcode (Xcode 6.3 beta lub Xcode 6.2) i użycie jej do zaktualizowania plików Interface Builder i nigdy nie otwieranie go w wersji 6.3. otwórz te Storyboard / XIB w nowym oknie w Xcode z option+ shift+ clickplikiem w drzewie projektu.

Za każdym razem, gdy napotkasz zamrożenie, używam tego polecenia, aby wyczyścić zapisany stan tylko dla tego projektu.

rm -rf YourProject.xcodeproj/project.xcworkspace/xcuserdata

James Tang
źródło
3
xcuserdatapomocne jest polecenie czyszczenia . pracuje dla mnie.
Yevhen Dubinin
5
Jeśli używasz CocoaPods, może być konieczne usunięcie xcuserdata z głównego pliku obszaru roboczego zamiast tego z .xcodeproj rm -rf YourProject.xcworkspace / xcuserdata
Nur Iman Izam
Hej, ostatnio często natknąłem się na ten problem, więc napisałem skrypt, który pomoże mu rozwiązać problem. Działa świetnie w przypadku projektu używającego CocoaPods, ale nie testowałem go poza własnym środowiskiem. Zawiera rozwiązanie zamieszczone w tej odpowiedzi, ale powinno obsługiwać zarówno pojedyncze projekty, jak i obszary robocze gist.github.com/Ziewvater/3190e20b1ace2ab3c3b6 . Daj mi znać, jeśli mogę coś
ulepszyć
15

Odpowiedź od Apple: Link do forów deweloperów w Apple

Dziękuję wszystkim za raporty. Śledzimy to po naszej stronie i ciężko pracujemy, aby go rozwiązać. Niestety nie mamy dobrego obejścia, ale są dwie możliwości, abyś mógł zacząć:

Jeśli Xcode zawiesza się podczas uruchamiania, ponieważ scenorys / XIB używający niestandardowej czcionki / IBDesignable był wcześniej otwarty: usuń plik „UserInterfaceState.xcuserstate” wewnątrz xcodeproj projektu, który otwierasz, będzie to następująca ścieżka: Moja aplikacja .xcodeproj / project.xcworkspace / xcuserdata / yourusername.xcuserdatad / UserInterfaceState.xcuserstate

Jeśli naprawdę potrzebujesz edytować plik scenorysu / XIB zawierający niestandardową czcionkę za pomocą Xcode 6.3:

  1. Utwórz kopię swojego storyboardu / pliku XIB jako kopię zapasową
  2. Otwórz plik scenorysu / XIB w edytorze tekstu
  3. Usuń tagi XML o nazwie „fontDescription”, które odwołują się do niestandardowej czcionki, na przykład:. Usunięcie tego znacznika przywróci czcionkę do standardowej czcionki systemowej.
  4. Utwórz wyjścia dla obiektów przy użyciu niestandardowej czcionki iw czasie wykonywania ustaw czcionkę tych obiektów na niestandardową czcionkę, na przykład w nadpisaniu viewDidLoad lub awakeFromNib na kontrolerze widoku

WAŻNA UWAGA: nigdy nie zalecamy ręcznego edytowania plików storyboardów / XIB. Jednak zdajemy sobie sprawę, że ten problem uniemożliwia wielu z was edytowanie dokumentów i chcieliśmy zapewnić obejście tego problemu z zastrzeżeniem, że każda ręczna edycja może spowodować uszkodzenie dokumentu.

picciano
źródło
9
To wszystko jest zabawne. „Jeśli naprawdę potrzebujesz edytować plik scenorysu / plik XIB”
user1021430
13

Dla mnie ten sam problem. Usunięcie IB_DESIGNABLE rozwiązuje problem. Powrót do wersji 6.2 nie działa, ponieważ testuję aplikacje na urządzeniu z iOS 8.3 - Xcode 6.2 nie może uruchamiać aplikacji na urządzeniach z iOS 8.3 :(

Denis Kildishev
źródło
Ten sam problem również tutaj. Potrzebuję 8.3 i używam też nowszych funkcji Swift.
Christian A. Strømmen
Alternatywą, jeśli nadal musisz wykonać pracę i zdarza się, że ktoś puka, jest powrót do jednej z wersji beta Xcode 6.3. Mogę potwierdzić, że wersja 6D532l (chyba beta 3) nie zawiesza się.
Samscam,
3

Innym obejściem jest zmiana rozszerzeń plików dla wszystkich plików czcionek i załadowanie zmienionych nazw plików z Info.plist. W ten sposób możesz zachować IBDesignables i nadal używać niestandardowych czcionek, ale nie będziesz w stanie ich zobaczyć w Selektorze czcionek w Interface Builder.

Wszystkie niestandardowe czcionki, które zostały wcześniej ustawione z Interface Builder, będą nadal działać, ale aby je zmienić lub ustawić inne niestandardowe czcionki, będziesz musiał to zrobić z kodu lub zmodyfikować pliki Storyboard lub Nib z edytora tekstu w kolejności aby ustawić nazwę czcionki.

KoCMoHaBTa
źródło
To zadziałało dla mnie. Zauważyłem, że nawet po usunięciu zapisanego stanu / xcuserdata po prostu zepsuje się ponownie przy następnym otwarciu storyboardu. Usunięcie rozszerzeń czcionek i aktualizacja Info.plist wydaje się działać lepiej
John Martin
U mnie to również zadziałało, po wykonaniu czynności, które opublikował @picciano
Albert Bori
2

Nie mam odpowiedzi, ale dowiedziałem się, że zwykłe wymuszone zamknięcie i ponowne uruchomienie spowoduje ponowne uruchomienie Xcode w dokładnie tej samej sytuacji. Aby móc ponownie uruchomić Xcode, usuń folder ~/Library/Saved Application State/com.apple.dt.Xcode.savedState.

Bart van Kuik
źródło
1
Inną opcją jest zlokalizowanie pliku projektu w Finderze (.xcodeproj lub .xcworkspace) -> pokaż zawartość pakietu -> i usuń tam folder "xcuserdata". Przywróci stan interfejsu użytkownika Xcode.
maxkonovalov
Zniszczenie danych użytkownika pomogło mi rozwiązać problem z Xcode 6.3
Sascha Held
1

Ten błąd został naprawiony w wydanej dzisiaj wersji beta 6.4 Xcode. Przejdź do centrum deweloperów i zaloguj się, aby go pobrać.

Christian A. Strømmen
źródło
Wolałbym poczekać na nowe wydanie Xcode 6.3 (np. 6.3.1), ponieważ nie możemy pozwolić sobie na rozwijanie na wydaniach beta, ponieważ mogą one przynosić więcej problemów niż te, które są naprawiane.
KoCMoHaBTa
3
Pobrałem 6.4, ale nadal się zawiesza.
Jibla
1

Xcode 8.1 - jeśli masz widok z Nawigacją (w moim przypadku był to nieprzezroczysty górny pasek nawigacji), po prostu spróbuj ustawić właściwość „górny pasek” na Brak.

O. Kurnenkov
źródło
Myślę, że mogłeś dodać to do niewłaściwego pytania.
picciano
@picciano nope, to jest faktycznie poprawne. To była jedyna rzecz, która działała dla mnie. Proszę zobaczyć moją odpowiedź, aby uzyskać więcej informacji
LuisCien
0

Aby obejść ten problem, właśnie wykomentowałem wszystkie znaczniki @IBDesignable w moich kilku niestandardowych komponentach, które tego używają. Kiedy to zrobiłem, tak, tracę możliwość zmiany ustawień w Interface Builder, ale pozwoliło mi to przynajmniej otworzyć pliki .xib bez awarii XCode.

Po prostu usunę komentarz z tych wierszy @IBDesignable, gdy Apple pojawi się z poprawką.

user871177
źródło
0

@O. Odpowiedź Kurnenkowa zadziałała dla mnie. Nie miało to nic wspólnego z IB_Designable ani niestandardowymi czcionkami, Cocoapodami itp.

Z jakiegoś powodu posiadanie „Nieprzezroczystego paska nawigacji” powoduje, że nibplik (wydaje się, że nie wpływa to na storyboards) stale zmienia ypołożenie; można to zobaczyć w miejscu, w Size Inspectorktórym ypozycja będzie migotać między 0 a 64. To się dzieje ze mną z Xcode 8.2 (8C38).

wprowadź opis obrazu tutaj

Domyślam się, że to powoduje, że Xcode stale aktualizuje układ, a tym samym wyczerpuje zasoby i powoduje zawieszanie się / zamrażanie.

wprowadź opis obrazu tutaj

Rozwiązaniem jest użycie dowolnej z opcji „Półprzezroczyste”, Wnioskowane lub Brak.

Mam nadzieję że to pomoże!

LuisCien
źródło