Delphi Generics TList のアイテムを自動開放 → TObjectList
Generics.Collections.TList のアイテムは自動開放されないので
クラスなんかに埋め込んだ場合 OnNotify イベントを利用するとスッキリする
(試しに無名メソッドを使ってみたけど、そっちはコンパイルが通らなかった)
【追記】
TObjectList というのがあり、こっちは自動開放されるリストだそうです
(Generics.Collections にも Generics版あり)
TObjectList<t>.Create(True); ←Trueで生成すると、アイテムが破棄されるときにオブジェクトが解放される
使い方は TList と同じ
クラスなんかに埋め込んだ場合 OnNotify イベントを利用するとスッキリする
procedure TMyClass.OnNotifyItem(Sender: TObject; const Item: <t>; Action: TCollectionNotification); begin if (Action = cnRemoved) then begin // 追加, 削除, 入替がある Item.Free; end; end; // : OnNotify = OnNotifyItem;例では OnNotifyItem は任意の procedure 名、<t>の所に TList<t>で使用した型が入る
(試しに無名メソッドを使ってみたけど、そっちはコンパイルが通らなかった)
【追記】
TObjectList というのがあり、こっちは自動開放されるリストだそうです
(Generics.Collections にも Generics版あり)
TObjectList<t>.Create(True); ←Trueで生成すると、アイテムが破棄されるときにオブジェクトが解放される
使い方は TList と同じ
コメント