LoginSignup
24
25

More than 5 years have passed since last update.

UINibのキャッシュで動作改善

Last updated at Posted at 2013-02-15

//追記 2015/03/24
こちらの記事はiPhone3GS時代に効果があったものになります。
たぶん今では気にしなくても問題ないと思われます。
//追記終わり

カスタムビューをIBで作成した場合、以下のようなコードでビューのインスタンス化を行うと思います。

//xibファイルからのインスタンス化
UINib *nib = [UINib nibWithNibName:@"hoge" bundle:nil];
UIView *hogeView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];

UINib Class Referenceによるとメモリにキャッシュされるとあるが、プロファイラで見ると結構処理に時間が掛かっている場合があります。

なので以下のように明示的にキャッシュすることで、自分の場合体感で分かるほど動作が改善しました。

//キャッシュにある場合はそれを利用
UINib *nib = [[Huga sharedNSCache] objectForKey:@"hoge"];
if (nib == nil) {
    nib = [UINib nibWithNibName:@"hoge" bundle:nil];
    [[Huga sharedNSCache] setObject:nib forKey:@"hoge"];
}

実際にはnibのロード処理をUIViewのカテゴリとして実装すると使い勝手がいいと思います。

24
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25