2011年11月3日木曜日

Objective-Cのメモリ管理指示子の違い

Objective-Cのメモリ管理指示子の違いまとめ。

assign アドレスコピー
メモリ領域のアドレスだけをコピーする
release不要
実体の値保証なし=実体の確保/管理の把握が必要(別途allocしてある領域とか)
内容の変更はしないか、したらオリジナルが改変される

retain 開放遅延
メモリ領域の開放を遅延する
release必要
ローカル領域にも有効
内容の変更は、基本的に不可(推奨されない。開放したら消えるから。)

copy
実体コピー
同じ大きさの領域を確保の上、内容もコピーする
release必要
内容の変更も自由。ただし、改変結果は大元には影響しない。

実際のところ、わからないのなら、メモリと速度に余裕があるならcopy~releaseにしておけば
安全。
UI要素はcopy宣言されている、と思う。

・・・

私は、解放タイミングが明確でないautoreleaseは一切使わない。
公開されているライブラリを使うときも、必ず使わないように書き換える。

0 件のコメント:

コメントを投稿