CGFontCreateWithDataProviderで固まるバグの対処方法(objective-c)

こんにちは♪最近は寝てる時間以外の90%近くをパソコンの画面を見て過ごしているあっきぃさんもといひっきぃさんです。よろぴこっ♪ iPhoneアプリの話なんですが、フォントファイルってあるじゃないですか。hogehoge.otfとかmukimuki.ttfとかとかとか。 アプリによっては色々なフォントが使えるとかわいいですよね。しかしフォントファイルは思いのほか重いのです。 きゃぁー、これもかわいいーおお、これなんかカッコいいなーなぁんてほいほいXcodeちゃんに組み込んでいったらあっという間に50MB超えてしまう…(50MBを超えるとユーザーはwifi環境でないとインストール出来なくなってしまう。 そこでフォントファイルをダウンロードして読み込めばいいのだっ ってな発想になるわけですね♪ ダウンロードしたフォントファイルをドキュメント下とかに置いといて、#import <CoreText/CoreText.h>して //pathはダウンロードしたフォントファイルまでのpathNSData *data = [[NSFileManager defaultManager] contentsAtPath:path];@try {        CFErrorRef error;        CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);        CGFontRef font = CGFontCreateWithDataProvider(provider);        if(!CTFontManagerRegisterGraphicsFont(font, &error;)){                CFStringRef errorDescription = CFErrorCopyDescription(error);                CFRelease(errorDescription);        }        CFRelease(font);        CFRelease(provider);}@catch (NSException *exception) {        NSLog(@”このフォントはもう…もう…”);} 的な感じで読み込みが出来るわけでーす♪なるほどふふふーん♪ じゃぁこれをAppDelegateとかで起動時に走らせればいいかなーと思ったのですが、何故か固まるという… なぜ…なぜなの…?!落ちるとかではなく完全なるフリーズ ダウンロードしたフォントファイルが壊れているのかっ。日頃の行いが悪いのかっ。とかなんとか思ったんですが違うみたい。 解決方法としては読み込む前に一行足すだけ。 [UIFont systemFontOfSize:10]; 読み込む前に一度でもUIFont系を実行しないとだめみたい。UIFont系を呼び出した時に始めてXcodeに組み込んであるフォントファイルとかも読み込むようで、そこらへんと関係してる気がする。 はまっている方に参考になればと♪ ではでは♪

View More