Форум: "Corba";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизЗдравствуйте! Если функция _AddRef вызывается при любом обращении Найти похожие ветки
← →
VK220 © (2004-05-17 16:29) [0]к объекту, то когда вызывается _Release? Спасибо.
← →
default © (2004-05-17 17:04) [1]что понимаешь под обращением?
ясно что каждому _AddRef соотв-ет _Release
← →
VK220 © (2004-05-17 17:14) [2]т.е. при
Переменная := Объект
вызывается _AddRef у Объекта...
← →
default © (2004-05-17 17:27) [3]VK220 © (17.05.04 17:14) [2]
да, при выходе за область видимости удаляется или в других случаях(об"nil-ие, передача в подпрог-мму как var или out-параметр, при присвоении может ещё что-то...)
Вы смотрите в окно CPU, ещё в System загляните там маленькие подпрог-ки эти есть(которые обслуж-ие интер-ых пер-ых вып-ют)
← →
VK220 © (2004-05-17 19:25) [4]Oh, подробнее это выглядит так:
IntObject = interface
Object = class(TInterfacedObject, IntObject);
SubObject = class(TAggregatedObject, ISubObject);
...
...
IntObject.Create; // вызывается _AddRef у объекта Object
...
...
SubObject.Create(IntObject); // вызывается _AddRef у объекта Object
SubObject.ParentObject := IntObject; // опять вызывается _AddRef у объекта Object
// ParentObject - свойство типа IntObject
...
...
SubObject := nil;
Object := nil;
в итоге, количество ссылок на IntObject равно 1 и он не уничтожается.
← →
Бином Ньютоныч (2004-05-17 20:27) [5]Имхо, сохраняется ссылка на IntObject через свойство ParentObject. Если это свойство необходимо, то нужно реализовать так:
function GetParentObject: IntObject;
property ParentObject: IntObject read GetParentObject;
function ...GetParentObject: IntObject;
begin
Result:=IntObject(Controller);
end;
Write для него лишнее.
← →
VK220 (2004-05-19 16:37) [6]Большое всем спасибо! Проблема решилась!
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c