Xib занимает много времени (> 1 с) для загрузки. Кажется, что кэш UIFont виноват

У меня есть загрузка UIVC с раскадровки, которая, в свою очередь, загружает Xib. Эта внутренняя нагрузка приводит к тому, что VC занимает больше секунды, чтобы загрузить. Во внутреннем xib присутствует какая-то причудливая работа (она загружает другой xib, который имеет динамический чертеж), но это не похоже на узкое место.

Согласно Инструментам, виновник UIFont -initWithCoder. (Если вы еще больше развернете TBaseFont::CopyLocalizedName(), это самая глубокая запись, на которую приходится большая часть времени в 1 секунду)

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

Screenshot from Instruments

Ответ 1

Хорошо, проблема заключалась в том, что пользовательский шрифт больше не был встроен в приложение. Я переключился на другую подобную, которая выглядела одинаково. Странно, хотя, как я ожидал, эти оскорбительные ярлыки вернут шрифт системы на устройстве, но они этого не сделали. Возможно ли, что их вытащили из Macbook?

Ответ 2

Аналогичный вопрос здесь - Хари и gbk намекнули мне в правильном направлении.

Я обнаружил, что мы использовали Lucida Grande в одном маленьком скрытом месте (спасибо grep), но Lucida Grande НЕ встроен в iOS, Я только что заменил Lucida Grande Helvetica Neue, и я получил 3 + секунды во время запуска. Впечатляет.

Ответ 3

У нас была аналогичная проблема - в моем случае другой разработчик просто использовал еще один тип шрифта, поэтому после того, как система слияния не смогла определить шрифт и изменила его по умолчанию - требуется от 1200 мс до 2300 мс.

Решение - переустановите все шрифты на ViewController, которые вызывают некоторое замораживание.