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
    FOwner;
    Public
    function create(Owner);
    begin
    FOwner:=MakeWeakRef(Owner);
    end;
    end;

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




    这种方式可以解决循环引用的问题,但是操作起来较为麻烦,用户需要知道在什么情况下会产生循环引用,然后再到指定位置去进行增加控制,这种写法容易错漏,当需要的弱引用较多时,编写也比较繁琐,也不容易维护,因此,为了开发方便天软还提供了自动弱引用的方式。