Xcode 6.3 зависает/зависает после открытия файла XIB

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

Я открыл отчет об ошибке с Apple. (Ошибка 20483867).

Сейчас у меня есть две работы.

  • Загрузите и используйте Xcode 6.2 от Apple.
  • Удалите теги IB_DESIGNABLE из пользовательских файлов заголовков представлений.

Вероятно, это ошибка Apple, но у кого-то есть лучшая работа или решение?

Ответ 1

Xcode 6.3.1 устраняет проблему с пользовательскими шрифтами и представлениями IB_DESIGNABLE в раскадровке. Обновление через Mac App Store, и вы должны быть хорошими.

Ответ 2

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

Это происходит только тогда, когда ваш проект содержит пользовательский шрифт. Он замерзает, просто посещая любую раскадровку /XIB, которая содержит индивидуальное представление IBDesignable, даже не ссылаясь на этот шрифт в вашей раскадровке /XIB.

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

Всякий раз, когда вы сталкиваетесь с замораживанием, я использую эту команду, чтобы очистить сохраненное состояние только для этого проекта.

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

Ответ 3

Ответ от Apple: Ссылка на форумы разработчиков на Apple

Спасибо всем за ваши отчеты. Мы отслеживаем это с нашей стороны и прилагаем все усилия, чтобы решить ее. К сожалению, у нас нет обходного пути, но здесь есть два варианта:

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

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

  • Сделайте копию своего файла раскадровки /XIB в качестве резервной копии
  • Откройте файл раскадровки /XIB в текстовом редакторе
  • Удалите теги XML с именем "fontDescription", которые ссылаются на ваш собственный шрифт, например:. Удаление этого тега вернет шрифт к стандартным системным шрифтам.
  • Создание точек доступа к объектам с использованием настраиваемого шрифта и во время выполнения задает шрифт этих объектов для вашего пользовательского шрифта, например, при переопределении viewDidLoad или awakeFromNib на вашем контроллере представления.

ВАЖНОЕ ПРИМЕЧАНИЕ: мы не рекомендуем вручную редактировать файлы раскадровки /XIB. Однако мы признаем, что эта проблема мешает многим из вас отредактировать ваши документы и хочет предоставить обходное решение с предостережением о том, что любое редактирование вручную может привести к повреждению вашего документа.

Ответ 4

Такая же проблема для меня. Удаление IB_DESIGNABLE устраняет проблему. Возвращение к 6.2 не работает для меня, поскольку я тестирую приложения на устройстве с iOS 8.3. Xcode 6.2 не может запускать приложения на устройствах с iOS 8.3: (

Ответ 5

Другим обходным решением является изменение расширений файлов на все ваши файлы шрифтов и загрузка измененных имен файлов из Info.plist. Таким образом, вы можете сохранить IBDesignables и по-прежнему использовать свои пользовательские шрифты, но не сможете их увидеть в Font Picker в Interface Builder.

Все пользовательские шрифты, которые были явно настроены из Interface Builder, будут продолжать работать, но для их изменения или для установки других пользовательских шрифтов вам придется делать это либо из кода, либо для изменения файлов Storyboard или Nib из текста редактора, чтобы задать имя шрифта.

Ответ 6

У меня нет ответа, но выяснилось, что просто принудительное завершение и перезапуск снова запустит Xcode в той же ситуации. Чтобы просто перезапустить Xcode, удалите папку ~/Library/Saved Application State/com.apple.dt.Xcode.savedState.

Ответ 7

Эта ошибка была исправлена ​​в бета-версии 6.4 Xcode, которая появилась сегодня. Перейдите в центр dev и войдите в систему, чтобы загрузить его.

Ответ 8

Xcode 8.1 - если у вас есть вид с навигацией (в моем случае это была верхняя панель Bar opaque Navigation), попробуйте установить свойство "верхняя панель" на "Нет".

Ответ 9

Как обходной путь, я просто прокомментировал все @IBDesignable разметки в моих горстках настраиваемых компонентов, которые используют это. Когда я это сделал, да, я потерял способность настраивать настройки в Interface Builder, но это позволило мне хотя бы открыть файлы .xib без сбоев XCode.

Я просто не буду комментировать эти @IBDesignable строки, когда Apple придет с исправлением.

Ответ 10

@O. Ответ Курненкова сработал у меня. Это не имело никакого отношения к IB_Designable и пользовательским шрифтам, Cocoapods и т.д.

По какой-то причине наличие "непрозрачной навигационной панели" вызывает файл nib (он не влияет на storyboard s), чтобы постоянно менять позицию y; это можно увидеть в Size Inspector, где позиция y будет мерцать между 0 и 64. Это происходит со мной с Xcode 8.2 (8C38).

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

Я предполагаю, что это приводит к тому, что Xcode постоянно обновляет макет, тем самым истощая ресурсы и заставляя его зависать/замораживаться.

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

Решение состоит в использовании любого из "прозрачных" опций, Inferred или None.

Надеюсь, это поможет!