我有一个助手类,将在整个应用程序中广泛使用.实现依赖于接口引用计数,这个想法大致是:
...
var
lHelper: IMyHelper;
begin
lHelper := TMyHelper.Create(some params);
...some code that doesn't have to access lHelper
end;
Run Code Online (Sandbox Code Playgroud)
因此,实现依赖于IMyHelper在方法结束时超出范围,但之前没有.
所以我要问的是,我可以肯定,在未来的某些Delphi编译器中,如果在该方法的其余部分中没有访问该变量,那么在创建它之后就不会发挥智能并立即释放界面吗?
我的接口有一个小问题.这是伪代码:
type
Interface1 = interface
end;
Interface2 = interface
end;
TParentClass = class(TInterfacedObject, Interface1)
private
fChild : Interface2;
public
procedure AddChild(aChild : Interface2);
end;
TChildClass = class(TInterfacedObject, Interface2)
private
fParent : Interface2;
public
constructor Create(aPArent : Interface1);
end;
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到这个缺陷吗?我需要孩子引用它的父级,但引用计数在这种情况下不起作用.如果我创建一个ParentClass实例,并添加一个子类,那么父类永远不会被释放.我明白为什么.我怎么绕圈呢?