iOSアプリのパフォーマンス解析をしていたら、nibのロードが遅くて、原因はカスタムフォントだった件。

iOSアプリのパフォーマンス解析をしていたら、nibのロードが遅かった。原因は、正しくインストールされていないカスタムフォントをInterfaceBuilderで指定していたことが原因だった。

コードは、カスタムViewをつくるときの定石だと思うが、以下のようにnibをロードする感じ。

で、原因を調査してヒットした記事が以下。
Nib files loading extremly slow

この記事を見て、自分のアプリのxibファイルをみてみると、ヒラギノ角ゴ Proが指定されていた!ヒラギノ角ゴシックは、標準フォントであるけど、ヒラギノ角ゴ Proはない。
デザイン時に、このフォントを使用しており、コーディング時に、フォントファイルだけ削除したことから、こうなってしまったようだ。

ヒラギノ角ゴPro
ヒラギノ角ゴProが指定されていた
ヒラギノ角ゴPro2
詳細を表示してみるとちゃんと表示されていないことがわかる
ヒラギノ角ゴシッック
ヒラギノ角ゴシック

ってことで、他にもこのフォントが指定されていないか調べることにした。XCodeで、xibファイルを右クリッック > Open As > Source Codeして、どのように指定されているのか見てみる。
そうすると、ボタンやラベルなどに以下のように指定されていた。

で、これの、「HiraKakuPro」で、XCodeのプロジェクト内の検索機能で検索。
が、出てこない!なんで!
なので、さっさと諦めて、ターミナルからgrep検索することに。

grep -r 'HiraKakuPro' ./MyApp

(※MyAppは、実際は、自分のアプリ名です。)
そうるすと、ザクザク出てきたので、ひとつひとつのファイルを、丁寧にInterfaceBuilderから修正。ソースを直接置換してもできるのかもしれないが、InterfaceBuilderが、何をよろしくやってくれているのかわからないので、InterfaceBuilderから手で作業して修正することにした。幸いにも、ファイル数自体は、数ファイルしかなかった。

これで、パフォーマンスが改善した。というか、普通の速さにもどった。かなり速度に違いが出ると思うのだが...。フォントファイルを探しに行っているということなのだろうか?