Xcode 6.3 friert ein / hängt nach dem Öffnen der XIB-Datei

82

Nach dem Upgrade auf Xcode 6.3 (Release-Version) friert Xcode jetzt jedes Mal ein, wenn ich eine XIB / Storyboard-Datei mit einer IB_DESIGNABLEAnsicht öffnedas verwendet eine benutzerdefinierte Schriftartfür alle Projekte und enthält eine benutzerdefinierte Schriftart (muss nicht unbedingt auf diese Schriftart in diesem XIB / Storyboard verweisen). Das Einfrieren erfolgt nach dem Öffnen der .xib-Datei und dem Versuch, zu einer anderen Datei zu wechseln. Xcode hängt und muss zwangsweise beendet werden.

Ich habe einen Fehlerbericht mit Apple geöffnet. (Fehler 20483867).

Im Moment habe ich zwei Workarounds.

  1. Laden Sie Xcode 6.2 von Apple herunter und verwenden Sie es.
  2. Entfernen Sie die IB_DESIGNABLE-Tags aus den benutzerdefinierten Ansichtskopfdateien.

Dies ist wahrscheinlich ein Apple-Fehler, aber hat jemand eine bessere Lösung oder Lösung?

Picciano
quelle
7
Hier friert Xcode vollständig ein, wenn ich versuche, von Interface Builder zu einer anderen Datei zu wechseln. Das Entfernen ALLER IB_DESIGNABLE Attribute behebt dieses Problem. Ich werde jetzt auf 6.2 zurückgehen ...
maxkonovalov
1
Hier gilt das gleiche. Das Entfernen des Ordners ~ / Library / Saved Application State / com.apple.dt.Xcode.savedState hilft mir, aber wenn ich versuche, das Storyboard erneut zu öffnen, tritt das gleiche Problem auf.
Tikhop
Sie können auch versuchen, "Ansichten automatisch aktualisieren" zu deaktivieren, um festzustellen, ob dies den Absturz verhindert. Wenn ja, können Sie sehen, ob Sie "Alle Ansichten aktualisieren" können, ohne zu blockieren.
nhgrif
@nhgrif Wo ist diese Einstellung?
Picciano
2
Apple hat die Ausgabe von sysdiagnose angefordert. Ich werde weiterhin Updates bereitstellen, wenn dies fortschreitet.
Picciano

Antworten:

26

Xcode 6.3.1 behebt das Problem mit benutzerdefinierten Schriftarten und IB_DESIGNABLEAnsichten in einem Storyboard. Aktualisieren Sie über den Mac App Store, und Sie sollten gut sein.

Josh Brown
quelle
28

Ich habe bereits eine Bearbeitung für eine genauere Beschreibung vorgeschlagen .

Dies geschieht nur, wenn Ihr Projekt eine benutzerdefinierte Schriftart enthält. Es wird eingefroren, wenn Sie ein Storyboard / XIB besuchen, das eine benutzerdefinierte IBDesignable-Ansicht enthält und nicht einmal auf diese Schriftart in Ihrem Storyboard / XIB verweist.

Meine Problemumgehung besteht darin , eine ältere Version von Xcode zu installieren (Xcode 6.3 Beta oder Xcode 6.2) und diese zum Aktualisieren Ihrer Interface Builder-Dateien zu verwenden und diese niemals in 6.3 zu öffnen. Öffnen Sie diese Storyboards / XIB in einem neuen Fenster in Xcode mit option+ shift+ clickder Datei im Projektbaum.

Immer wenn Sie auf das Einfrieren stoßen, verwende ich diesen Befehl, um den gespeicherten Status nur für dieses Projekt zu löschen.

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

James Tang
quelle
3
Der Befehl zum Löschen xcuserdataist hilfreich. funktioniert bei mir.
Yevhen Dubinin
5
Wenn Sie CocoaPods verwenden, müssen Sie möglicherweise auch die xcuserdata aus der Hauptarbeitsbereichsdatei entfernen, anstatt die aus .xcodeproj rm -rf YourProject.xcworkspace / xcuserdata
Nur Iman Izam
Hey, ich bin in letzter Zeit viel auf dieses Problem gestoßen, also habe ich ein Skript geschrieben, um das Problem zu lösen. Es funktioniert hervorragend für ein Projekt mit CocoaPods, aber ich habe es nicht außerhalb meiner eigenen Umgebung getestet. Es enthält die in dieser Antwort angegebene Lösung, sollte jedoch sowohl einzelne Projekte als auch Arbeitsbereiche behandeln . Gist.github.com/Ziewvater/3190e20b1ace2ab3c3b6 . Lassen Sie mich wissen, ob es eine Verbesserung gibt, die ich daran vornehmen kann
Ziewvater
15

Antwort von Apple: Link zu Entwicklerforen auf Apple

Vielen Dank für Ihre Berichte. Wir verfolgen dies auf unserer Seite und arbeiten hart daran, es zu lösen. Leider haben wir keine gute Problemumgehung, aber hier sind zwei Optionen, um Sie zum Laufen zu bringen:

Wenn Xcode beim Start hängen bleibt, weil zuvor ein Storyboard / XIB mit einer benutzerdefinierten Schriftart / IBDesignable geöffnet war: Entfernen Sie die Datei "UserInterfaceState.xcuserstate" im xcodeproj des Projekts, das Sie öffnen, und befinden Sie sich auf einem Pfad wie dem folgenden: Meine App .xcodeproj / project.xcworkspace / xcuserdata / yourusername.xcuserdatad / UserInterfaceState.xcuserstate

Wenn Sie die Storyboard- / XIB-Datei mit der benutzerdefinierten Schriftart mit Xcode 6.3 wirklich bearbeiten müssen:

  1. Erstellen Sie eine Kopie Ihrer Storyboard- / XIB-Datei als Backup
  2. Öffnen Sie die Storyboard / XIB-Datei in einem Texteditor
  3. Entfernen Sie XML-Tags mit dem Namen "fontDescription", die auf Ihre benutzerdefinierte Schriftart verweisen. Beispiel :. Durch Entfernen dieses Tags wird die Schriftart auf die Standard-Systemschrift zurückgesetzt.
  4. Stellen Sie mithilfe der benutzerdefinierten Schriftart Outlets für die Objekte her und stellen Sie zur Laufzeit die Schriftart dieser Objekte auf Ihre benutzerdefinierte Schriftart ein, z. B. beim Überschreiben von viewDidLoad oder awakeFromNib auf Ihrem View Controller

WICHTIGER HINWEIS: Wir empfehlen niemals, Storyboard- / XIB-Dateien von Hand zu bearbeiten. Wir sind uns jedoch bewusst, dass dieses Problem viele von Ihnen daran hindert, Ihre Dokumente zu bearbeiten, und wollten eine Problemumgehung mit der Einschränkung bieten, dass jede Handbearbeitung zu einer Beschädigung Ihres Dokuments führen kann.

Picciano
quelle
9
Das ist alles irgendwie komisch. "Wenn Sie die Storyboard- / XIB-Datei wirklich bearbeiten müssen"
user1021430
13

Gleiches Problem für mich. Das Entfernen von IB_DESIGNABLE behebt das Problem. Die Rückkehr zu 6.2 funktioniert bei mir nicht, da ich Apps auf Geräten mit iOS 8.3 teste. Xcode 6.2 kann keine Apps auf Geräten mit iOS 8.3 ausführen :(

Denis Kildishev
quelle
Gleiches Problem auch hier. Ich brauche 8.3 und verwende auch einige neuere Swift-Funktionen.
Christian A. Strømmen
Eine Alternative, wenn Sie noch arbeiten müssen und zufällig einen herumklopfen müssen, ist die Rückkehr zu einer der Xcode 6.3-Betas. Ich kann bestätigen, dass Build 6D532l (Beta 3, glaube ich) nicht hängt.
Samscam
3

Eine andere Problemumgehung besteht darin, die Dateierweiterungen in alle Ihre Schriftdateien zu ändern und die geänderten Dateinamen aus Info.plist zu laden. Auf diese Weise können Sie IBDesignables beibehalten und Ihre benutzerdefinierten Schriftarten weiterhin verwenden, diese jedoch nicht in der Schriftartenauswahl im Interface Builder anzeigen.

Alle benutzerdefinierten Schriftarten, die zuvor im Interface Builder festgelegt wurden, funktionieren weiterhin. Um sie jedoch zu ändern oder andere benutzerdefinierte Schriftarten festzulegen, müssen Sie dies entweder über Code tun oder die Storyboard- oder Nib-Dateien im Texteditor der Reihe nach ändern um den Schriftnamen festzulegen.

KoCMoHaBTa
quelle
Das hat bei mir funktioniert. Ich stellte fest, dass der gespeicherte Status / xcuserdata auch nach dem Entfernen des Storyboards beim nächsten Öffnen wieder unterbrochen wird. Das Löschen der Erweiterungen für die Schriftarten und das Aktualisieren der Info.plist scheint besser zu funktionieren
John Martin
Dies funktionierte auch für mich, nachdem ich die Schritte ausgeführt hatte, die @picciano gepostet hatte
Albert Bori
2

Ich habe keine Antwort, habe aber herausgefunden, dass Xcode durch genaues Beenden und Neustarten in genau derselben Situation neu gestartet wird. Entfernen Sie den Ordner, um Xcode einfach neu starten zu können ~/Library/Saved Application State/com.apple.dt.Xcode.savedState.

Bart van Kuik
quelle
1
Eine andere Möglichkeit besteht darin, Ihre Projektdatei im Finder (.xcodeproj oder .xcworkspace) zu suchen -> Paketinhalt anzuzeigen -> und dort den Ordner "xcuserdata" zu entfernen. Dadurch wird Ihr Xcode-UI-Status wiederhergestellt.
Maxkonovalov
Das Zerstören der Benutzerdaten half mir bei meinem Xcode 6.3-Problem
Sascha Held
1

Dieser Fehler wurde in der 6.4 Xcode Beta behoben, die heute veröffentlicht wurde. Gehen Sie zum Entwicklungscenter und melden Sie sich an, um es herunterzuladen.

Christian A. Strømmen
quelle
Ich würde es vorziehen, auf die neue Version von Xcode 6.3 (z. B. 6.3.1) zu warten, da wir es uns nicht leisten können, Beta-Versionen zu entwickeln, da diese möglicherweise mehr Probleme mit sich bringen als die, die behoben wurden.
KoCMoHaBTa
3
Ich habe 6.4 heruntergeladen, aber es stürzt immer noch ab.
Jibla
1

Xcode 8.1 - Wenn Sie eine Ansicht mit Navigation haben (in meinem Fall war es die undurchsichtige Navigationsleiste der oberen Leiste), versuchen Sie einfach, die Eigenschaft "obere Leiste" auf "Keine" zu setzen.

O. Kurnenkov
quelle
Ich denke, Sie haben dies möglicherweise zur falschen Frage hinzugefügt.
Picciano
@picciano nein, das ist eigentlich richtig. Es war das einzige, was für mich funktioniert hat. Bitte sehen Sie meine Antwort für weitere Details
LuisCien
0

Um dieses Problem zu umgehen, habe ich gerade das gesamte @IBDesignable-Markup in meiner Handvoll benutzerdefinierter Komponenten auskommentiert, die dies verwenden. Wenn ich das getan habe, habe ich zwar die Möglichkeit verloren, die Einstellungen in Interface Builder zu optimieren, aber es hat mir ermöglicht, zumindest die .xib-Dateien zu öffnen, ohne dass XCode abstürzt.

Ich werde diese @IBDesignable-Zeilen einfach auskommentieren, wenn Apple mit einem Fix auftaucht.

user871177
quelle
0

@Ö. Kurnenkovs Antwort hat bei mir funktioniert. Es hatte nichts mit IB_Designable oder benutzerdefinierten Schriftarten, Cocoapods usw. zu tun.

Aus irgendeinem Grund nibändert eine "undurchsichtige Navigationsleiste" die Position der Datei (sie scheint storyboards nicht zu beeinflussen ) ständig y. Dies ist Size Inspectoran der yStelle zu sehen, an der die Position zwischen 0 und 64 flackert. Dies passiert mir mit Xcode 8.2 (8C38).

Geben Sie hier die Bildbeschreibung ein

Ich vermute hier, dass Xcode das Layout ständig aktualisiert, wodurch Ressourcen aufgebraucht werden und es hängen bleibt / einfriert.

Geben Sie hier die Bildbeschreibung ein

Die Lösung besteht darin, eine der Optionen "Durchscheinend", "Abgeleitet" oder "Keine" zu verwenden.

Hoffe das hilft!

LuisCien
quelle