Форум: "Прочее";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
ВнизВремя жизни объекта. Найти похожие ветки
← →
Дмитрий_С (2008-07-13 19:15) [0]Есть к примеру два интерфейса:
IIntrFirst = interface
procedure JoinIntSecond(I: IUnknown);
end;
IIntrSecond = interface
procedure JoinIntFirst(I: IUnknown);
end;
Реализция:
TIntrFirst = class(IIntrFirst)
FSecond: IUnknown;
procedure JoinIntSecond(I: IUnknown);
end;
procedure TIntrFirst.JoinIntSecond(I: IUnknown);
begin
FSecond := I;
end;
TIntrSecond = class(IIntrFirst)
FFirst: IUnknown;
procedure JoinIntFirst(I: IUnknown);
end;
procedure TIntrFirst.JoinIntFirst(I: IUnknown);
begin
FFirst:= I;
end;
Затем следующий код:
First.JoinIntSecond(Second);
Second.JoinIntSecond(First);
First := nil;
Second := nil;
После этого объекты освободятся?
← →
Sergey Masloff (2008-07-13 20:01) [1]Ну в твоем случае вообще ни в каком случае не освободится поскольку ничего из IUnknown ты не реализовал а Пушкин за тебя это делать не будет ;-)
Приведи более конкретный пример.
← →
DrPass © (2008-07-13 20:09) [2]...но если бы ты их унаследовал от TInterfacedObject...
А вообще, практика - критерий истины. Самому посмотреть, вызывается ли _AddRef при присваивании FFirst:= I, вызывается ли деструктор при First:= nil, намного полезнее и познавательнее, чем спрашивать на форуме
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c