Interfaced object i RefCount = 0 przy tworzeniu - normalne?

0

Cześć, sytuacja jest taka:

type
  IMyInterface = interface(IUnknown)[GUID]
    procedure DoSth();
end;

TMyObj = class(TInterfacedObject, IMyInterface)
public
  procedure DoSth();
end;

Teraz tworzę obiekt:

 
FMyObj:=TMyObj.Create();

I teraz tak. W niektórych aplikacjach w debuggerze po najechaniu na FMyObj, widzę coś w sensie: "FMyObj(adres) as IMyInterface", a w niektórych: "FRefCount(0)". Pytanie pierwsze - skąd się pojawia różnica? Pytanie drugie - czy to jest normalne, żeby po utworzeniu RefCount był równy 0? Wg mnie powinien być 1. No bo teraz, jeśli przypiszę to gdzieś, np:

myObj2:=FMyObj 

to mam RefCount na 1. Teraz jeśli zrobię:

 myObj2:=nil

to mam RefCount na 0 i siłą rzeczy FMyObj musi zostać zwolniony. Dobrze rozumiem?

2

Wszystko zależy od tego jakiego typu jest FMyObj. Jeżeli Twój obiekt dziedziczy po TInterfacedObject, to powinieneś odwoływać się do niego wyłącznie przez interfejsy.

0

Zgadza się. FMyObj było typu TMyObj. Zmieniłem na IMyInterface.

1 użytkowników online, w tym zalogowanych: 0, gości: 1