Interface Builder хочет вас убить

Interface Builder — инструмент, входящий в состав Xcode. Он помогает создавать интерфейсы для приложений iOS, OS X и других платформ Apple. Последние разработки Apple, от начала и до конца доступны всем, остаётся лишь скачать последнюю версию.

Тут-то и начинаются проблемы…

The document “Main_iPhone.storyboard” could not be opened. The operation couldn’t be completed. (com.apple.InterfaceBuilder error -1.)

2014 год, загружен Xcode 6 beta 1. В одном из моих проектов главный файл интерфейса отказался напрочь открываться в Interface Builder. Как человек, надеющийся на корпорацию добра и пафоса, я решил подождать. Не может же ошибка быть у всех? Нельзя судить софт по бета версиям.

Проходит месяц, другой. Выходит Xcode 6 GM, а затем и релиз — без результатов. Как не открывался сториборд, так и не открывается.

Пользуясь старым Xcode 5 я беспощадно вырезал вью-контроллеры из сториборда, лишь бы открылся. После долгого мучения, я нашёл корень проблемы — заданные ранее .png изображения в UIImageView. Вот… Как так получилось? Удалил — всё работает.

Мой вопрос на Stack Overflow набрал 2.5 тысячи просмотров, а значит случай далеко не уникальный.

Проходит год. На дворе 2015-ый, загружен Xcode 7 GM. Прошлогоднюю проблему я не забыл и скрестив пальцы успешно открыл своё сториборд. Отлично! Однако, долго радоваться не пришлось — приложение намертво зависало при открытии некоторых вью-контроллеров.

Накопив опыт за год разработки я воспользовался Instruments, ещё одним полезным инструментом из набора Xcode и дал ответ на свой вопрос даже раньше, чем кто-то его прочитал. Углубившись в стэк вызовов, я заметил, что один из методов UITextView помогает поглощать 99% времени процессора. Не долго думая я очистил заданный текст в UITextView в зависавших вью-контроллерах, и угадайте что? Заработало!

Немногим позже. Xcode 7, релиз. Решил опробовать новый элемент StackView, который Apple представила нам в этом году. Расставил элементы, натянул автолэйаут и тут — Xcode повис. С моей манией жать cmd+C я долго не думал, завершил процесс и открыл проект заново. Но не тут-то было. При открытии сториборда Xcode упорно продолжал зависать, не давая мне входу.

Исходом этой проблемы был откат на старую версию файла без StackView, которые мне так и не удалось опробовать в бою. А продолжать я не стал, так как хотел вспомнил, что они доступны только с iOS 9.

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

Автор

Yaroslav Erohin

Yaroslav Erohin

мобильный разработчик, хувиан, одержим музыкой

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *