Xcode 6.3 зависає / зависає після відкриття файлу XIB


82

Після оновлення до Xcode 6.3 (випущена версія), Xcode тепер зависає кожного разу, коли я відкриваю файл XIB / Storyboard, що включає IB_DESIGNABLEподанняякий використовує спеціальний шрифтдля будь-яких проектів і включає спеціальний шрифт (не обов'язково мати посилання на цей шрифт у цьому XIB / Storyboard). Заморожування відбувається після відкриття файлу .xib та спроби переключення на будь-який інший файл. Xcode зависає і повинен бути примусово закритий.

Я відкрив звіт про помилки в Apple. (Помилка 20483867).

Зараз у мене є дві роботи.

  1. Завантажте та використовуйте Xcode 6.2 від Apple.
  2. Видаліть теги IB_DESIGNABLE із користувацьких файлів заголовків подання.

Це, ймовірно, помилка Apple, але чи є у когось краща робота чи рішення?


7
Те саме, що Xcode повністю зависає, коли я намагаюся перейти з Interface Builder на будь-який інший файл. Видалення ВСІХ IB_DESIGNABLE атрибутів вирішує цю проблему. Повернемося до 6.2 фоу зараз ...
maxkonovalov

1
Те ж саме. Видалення папки ~ / Library / Saved Application State / com.apple.dt.Xcode.savedState мені допомагає, але коли я намагаюся знову відкрити раскадровку, у мене виникла та сама проблема.
tikhop

Ви також можете спробувати зняти прапорець біля пункту "Автоматично оновлювати подання", щоб перевірити, чи не запобігає це збій? Якщо так, тоді ви можете побачити, чи можете ви «Оновити всі перегляди», не замикаючись.
nhgrif,

@nhgrif Де це налаштування?
picciano

2
Apple запитувала вихідні дані від sysdiagnose. Я продовжуватиму надавати оновлення по мірі того, як це буде прогресувати.
picciano

Відповіді:


26

Xcode 6.3.1 виправляє проблему зі спеціальними шрифтами та IB_DESIGNABLEподаннями в Storyboard. Оновіть через Mac App Store, і ви повинні бути добре.


28

Я вже запропонував редагування для більш точного опису .

Це трапляється лише тоді, коли ваш проект містить спеціальний шрифт. Він замерзне, просто відвідавши будь-яку Storyboard / XIB, що містить спеціальний вигляд IBDesignable, навіть не посилаючись на цей шрифт у вашій Storyboard / XIB.

Моє обхідне рішення полягає у використанні, якщо також була встановлена ​​старіша версія Xcode (Xcode 6.3 beta або Xcode 6.2), і використовувати це для оновлення файлів Interface Builder, і ніколи не відкривати його в 6.3. відкрийте ті Storyboard / XIB у новому вікні в Xcode за допомогою файлу option+ shift+ clickу дереві проекту.

Щоразу, коли ви стикаєтесь із заморожуванням, я використовую цю команду, щоб очистити збережений стан саме для цього проекту.

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


3
команда для очищення xcuserdataкорисна. працює для мене.
Євген Дубінін

5
Якщо ви використовуєте CocoaPods, вам також може знадобитися видалити xcuserdata з основного файлу робочої області замість файлу з .xcodeproj rm -rf YourProject.xcworkspace / xcuserdata
Нур Іман Ізам

Гей, я недавно наткнувся на це питання, тому написав сценарій, який допоможе вирішити проблему. Це чудово працює для проекту, що використовує CocoaPods, але я не тестував його поза своїм середовищем. Він включає рішення, розміщене в цій відповіді, але має обробляти як окремі проекти, так і робочі області gist.github.com/Ziewvater/3190e20b1ace2ab3c3b6 . Повідомте мене, якщо я можу зробити щось покращене
Ziewvater

15

Відповідь від Apple: Посилання на форуми розробників в Apple

Дякую усім за ваші звіти. Ми відстежуємо це з нашого боку і докладаємо всіх зусиль, щоб вирішити це. На жаль, ми не маємо великого обхідного шляху, але ось два варіанти, як запустити:

Якщо Xcode зависає під час запуску, оскільки раскадровка / XIB з використанням спеціального шрифту / IBDesignable раніше була відкрита: видаліть файл "UserInterfaceState.xcuserstate" усередині xcodeproj проекту, який ви відкриваєте, це буде таким шляхом: My App .xcodeproj / project.xcworkspace / xcuserdata / yourusername.xcuserdatad / UserInterfaceState.xcuserstate

Якщо вам дійсно потрібно відредагувати файл розкадровки / XIB, що містить спеціальний шрифт, за допомогою Xcode 6.3:

  1. Зробіть копію файлу розкадровки / XIB як резервну копію
  2. Відкрийте файл розкадровки / XIB у текстовому редакторі
  3. Видаліть теги XML з назвою "fontDescription", які посилаються на ваш власний шрифт, наприклад:. Видалення цього тегу призведе до повернення шрифту до стандартного системного шрифту.
  4. Зробіть розетки для об’єктів, використовуючи спеціальний шрифт, і під час виконання встановіть шрифт цих об’єктів на ваш власний шрифт, наприклад, у перевизначенні viewDidLoad або awakeFromNib на контролері перегляду

ВАЖЛИВА ПРИМІТКА: ми ніколи не рекомендуємо редагувати файли розкадрування / файли XIB. Однак ми усвідомлюємо, що ця проблема заважає багатьом із вас редагувати ваші документи, і ми хотіли запропонувати обхідне застереження, що будь-яке редагування вручну може призвести до пошкодження вашого документа.


9
Це все якось весело. "Якщо вам дійсно потрібно відредагувати файл розкадрування / файл XIB"
user1021430

13

Та сама проблема для мене. Видалення IB_DESIGNABLE вирішує проблему .. Повернення до 6.2 не працює для мене, оскільки я тестую програми на пристрої з iOS 8.3 - Xcode 6.2 не може запускати програми на пристроях з iOS 8.3 :(


Те саме питання і тут. Мені потрібно 8.3, а також я використовую новіші функції Swift.
Крістіан А. Стрьоммен

Альтернативою, якщо вам все-таки потрібно виконати роботу і, якщо трапляється один стукач, є повернення до однієї з бета-версій Xcode 6.3. Я можу підтвердити, що збірка 6D532l (бета-версія 3, на мою думку) не зависає.
Samscam

3

Іншим обхідним шляхом є зміна розширень файлів на всі ваші шрифтові файли та завантаження змінених імен файлів із Info.plist. Таким чином, ви можете зберегти IBDesignables і все ще використовувати власні шрифти, але не зможете побачити їх у засобі вибору шрифтів у Interface Builder.

Усі користувальницькі шрифти, які були встановлені з Interface Builder, продовжуватимуть працювати, але для того, щоб змінити їх або встановити інші власні шрифти, вам доведеться це зробити або з коду, або змінити файли Storyboard або Nib з текстового редактора, щоб щоб встановити назву шрифту.


Це спрацювало для мене. Я виявив, що навіть після видалення збереженого стану / xcuserdata він просто зламається знову при наступному відкритті розкадрування. Видалення розширень для шрифтів та оновлення Info.plist, здається, працюють краще
Джон Мартін

Це спрацювало і на мене після виконання кроків, які опублікував @picciano
Альберт Борі,

2

Я не маю відповіді, але з'ясував, що просто примусовий вихід і перезапуск знову запустить Xcode у точно такій же ситуації. Щоб просто перезапустити Xcode, видаліть папку ~/Library/Saved Application State/com.apple.dt.Xcode.savedState.


1
Іншим варіантом тут є пошук вашого файлу проекту у Finder (.xcodeproj або .xcworkspace) -> показати вміст пакета -> і видалити там папку "xcuserdata". Це відновить стан вашого інтерфейсу Xcode.
maxkonovalov

Знищення даних користувачів допомогло мені з моєю проблемою Xcode 6.3
Саша відбувся

1

Ця помилка виправлена ​​в бета-версії 6.4 Xcode, яка вийшла сьогодні. Зайдіть у центр розробки та увійдіть, щоб завантажити його.


Я волів би дочекатися нового випуску Xcode 6.3 (наприклад, 6.3.1), оскільки ми не можемо дозволити собі розробку бета-версій, оскільки вони можуть викликати більше проблем порівняно з виправленими.
KoCMoHaBTa

3
Я завантажив 6.4, але він все ще аварійно завершує роботу.
Джибла

1

Xcode 8.1 - якщо у вас є подання з Навігацією (у моєму випадку це була непрозора панель навігації верхньої панелі), просто спробуйте встановити для властивості "верхній бар" значення None.


Я думаю, ви, можливо, додали це до неправильного запитання.
picciano

@picciano nope, це насправді правильно. Це єдине, що працювало у мене. Будь ласка, перегляньте мою відповідь для отримання детальної інформації
LuisCien

0

Як обхідний шлях, я щойно прокоментував усі розмітки @IBDesignable у своїй купці користувацьких компонентів, які використовують це. Коли я це зробив, так, я втрачаю можливість налаштовувати налаштування у Interface Builder, але це дозволило мені принаймні відкрити файли .xib без збою XCode.

Я просто скасую коментарі до цих рядків @IBDesignable, коли Apple з’явиться без виправлення.


0

@O. Відповідь Курненкова спрацювала для мене. Це не мало нічого спільного з IB_Designable, ані з користувацькими шрифтами, Cocoapods тощо.

З якоїсь причини наявність "непрозорої панелі навігації" змушує nibфайл (здається, це не впливає на storyboard) постійно змінювати yположення; це видно в тому, Size Inspectorде yпозиція буде мерехтіти між 0 і 64. Це відбувається зі мною з Xcode 8.2 (8C38).

введіть тут опис зображення

Я думаю, що це призводить до того, що Xcode постійно оновлює макет, тим самим виснажуючи ресурси і змушуючи його зависнути / зависнути.

введіть тут опис зображення

Рішення полягає у використанні будь-якого з варіантів "напівпрозорого", виведеного або жодного.

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.