TSL语言基础 > 高级语言(新一代) > WeakRef弱引用(新一代) > 自动弱引用

自动弱引用解决循环引用的问题    


  • A:=new TA();
    Echo "Set A to NIL\r\n";
    A:=nil;
    Echo "Run end\r\n";
    Type TA=class
    FB;
    Public
    Function Create();
    Begin
    FB:=new TB(self);
    end;
    Function Destroy();
    Begin
    Echo "Destroy\r\n";
    End;
    End;
    type TB=class
    [WeakRef]FOwner;
    Public
    function create(Owner);
    begin
    FOwner:=Owner;//弱引用
    end;
    end;

    打印结果:
    Set A to NIL
    Destroy
    Run end



    其中,Fowner是自动弱引用成员变量,在对自动弱引用的成员变量进行赋值时,产生的引用为弱引用,至此,循环引用就得到了很好的解决。