接口编程中的一个疑问(24分)

  • 主题发起人 主题发起人 delphi0808
  • 开始时间 开始时间
D

delphi0808

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
Intf:IGreetable;
man:TMan;
begin
Try
man:=TMan.Create;
intf:=man;
Greeting(Intf);
finally
man.Free ;//释放对象
Intf:=nil;//释放接口
end;
end;

运行以上代码时,为何未出现所说的非法地址访问错误?
 
不要把对象和接口混用
 
只是为了验证接口释放问题
 
例中
tman实现了接口
procedure TForm1.Button1Click(Sender: TObject);
var
Intf:IGreetable;
man:TMan;
begin
Try
man:=TMan.Create;
intf:=man;
Greeting(Intf);
finally
Intf:=nil;
FreeAndNil(man);
end;
end;
运行以上代码时,为何未出现所说的非法地址访问错误?
 
帮顶,最好把相关的主要代码帖出来,还有倒哪行报错?
 
Intf:=nil;
//问题在这个地方
//实际要看你你的接口的性质是什么
FreeAndNil(man);
//当你的接口被只为nil的时候 会自动释放对象
//当然它不负责释放的同时把你的man也置为nil
所以 把你的IGreetable的定义贴出来先
或者楼主自己在man对象的析构方法中加个对话框来验证[:)]
 
后退
顶部