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

采用弱引用解决循环引用的问题    

  • [code] 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; [/code] 打印结果: Set A to NIL Destroy Run end



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