Я только что заметил, что
var
ObjList : TObjectList <TMyObject>;
...
ObjList := TObjectList <TMyObject>.Create (True);
ObjList.Add (TMyObject.Create);
ObjList.Clear;
не освобождает объект.Глядя на исходный код, кажется, что cnRemoved
не запускается уведомление в Clear
(унаследовано от TList <T>
).
Мой вопрос: Это намеренно?Есть ли причина, по которой никто не хочет получать эти уведомления в случае Clear
?Или это можно рассматривать как ошибку в классах коллекции?
РЕДАКТИРОВАТЬ
Оказывается, что я поставил строку
inherited Create;
вершина деструктора TMyObject
, который должен был войти в конструктор.Вот почему мне сообщили об утечках памяти, которые выглядели так, как будто TObjectList
не освобождает предметы.И взгляд на источник убедил меня (я был пойман в ловушку свойством Count
).В любом случае спасибо за вашу помощь!