So-net無料ブログ作成
検索選択

UIリソースの解放 [iphone]

cメンバ変数で
ClickableImageView* m_iv;
というUIImageViewの派生クラスのオブジェクトをもっているのだが、実はiphoneプログラミングでのUIリソースの解放がよくわかっていなかったのでメモ。

生成&画面に表示はViewControllerのなかで
m_iv = [[ClickableUIImageView alloc] init];
[self.view addSubview:m_iv];

解放は
[self.view removeFromSuperview];
[m_iv release];
しなければならない。

addSubviewでretainCountが+1され、removeFromSuperviewで-1され
るようだ。

NSLoc(@"retainCount=%i",[m_iv retaionCount]);
でretainCountを出力してみると addSubview 直後は2になっていて、
解放するときはなんと3になって勝手に1増えていた。しかし上記の解放
方法で(retainCountは1までしか戻らないが)deallocは呼ばれた。呼ばれた
ときのコールスタックをみるとAutoReleasePoolなるものから呼ばれていた。
自動的に管理されるのかよくわからないが、とにかく上記解放コードは実行しなければ、
画像を取り替えてm_ivを再利用するときにリークするので、忘れずに実行したい。

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。