A:=New TA("A");
B:=makeweakref(A);
echo "B.FA--",B.FA;
echo "Set A to nil";
A:=nil;
echo "A---End";
return 1;
Type TA=class
public
FA;
Function Create(v);
begin
echo "Create--",v;
FA:=v;
end
Function Destroy();
begin
echo FA,"-Destroy!";
end
end;
打印:
Create--A
B.FA--A
Set A to nil
A-Destroy!
A---End
解析:B.FA返回”A”,说明B引用A指向的对象;当A设置为nil时,A对应的对象被成功释放,即B:=makeweakref(A);没有导致A指向的对象的引用数加1,B是一个弱引用。