TObjectListのItem破棄
|
18 |
TObjectListAutoFree |
動作確認 |
Delphi2007 |
更新日 |
2010/04/21(水) |
TObjectListはItemを自動で破棄してくれるListです。
便利に使えますが、プロパティの設定で
自動破棄してくれなくなるので注意してください。
デフォルトではItemを自動破棄するように
OwnsObjects = True になります。
Ownerで管理するObjectsということです。
ObjectList.Free時に所有する全ItemをFreeしますし
ObjectList.Delete/Remove時にもItemをFreeします。
※ ObjectList.ClearについてはD2007のヘルプに記載がなく
VCLソースで確認しましたが、
Clear内部でDeleteを呼び出しているので
Freeと同様に全ItemをFreeしてくれます。
DeleteとRemoveは
Indexを指定して削除は、Deleteメソッド
Object自体を指定して削除は、Removeメソッドを使います。
Removeは戻り値として削除直前のIndexを返します。
OwnsObjects = Falseとすると上記のタイミングで
自分でFreeする必要があります。
※ OwnsObjectsというプロパティ名が誤解の元の気がします。
AutoFreeとかいうプロパティ名の方がわかりやすいのに。
Extractメソッドは、Object自体を指定して呼び出し
OwnsObjectsの値に関係なくオブジェクトを解放せずに
リストから取り除く事ができるメソッドです。
通常は、デフォルトの OwnsObjects = True で
使用するのがよいでしょう。
|