Create(nil) 的区别 -------------------------- 谢谢您!(30分)

  • 主题发起人 主题发起人 zqssoft
  • 开始时间 开始时间
Z

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,请问以下四种Create方法有何区别,分别在什么情况下用,谢谢。
Create(nil);
Create(Self);
Create(Application);
Create(Application.owner);
 
create(nil) 必须在适当的地方不用的时候释放对象
Create(Self);
Create(Application);
Create(Application.owner);
只是owner不同而已,可以由owner释放,也可以自己在适当的地方释放
 
楼上的解释够细的了。
不过如果你不怕程序烂的话,也不必“必须在适当的地方不用的时候释放对象
 
owner:类的属主
parent: 对象的容器
classA.create(B):
说明B是A的属主,A的生命周期有B来管理,无须A自己来free,
当B消失的时候自动会free A的
建议你把刘艺的《delphi面向对象编程》看看,很不错的
 
看TComponent源码就知道了
 
看一下TComponent的构造函数就知道了。
如果这个参数不为空,会递归调用一个方法。 好像叫InsertComponents吧。
 
Create(nil); 这种方式创建的对要自己手工进行FREE才会回收内存,其他很多内存泄漏就是忘了手工释放内存。
Create(Self);由self对象负责释放创建的对象,只self没有释放掉,这个对象的内存就不会被释入掉,除程序员手工进行释放,他会触发很多事件。性能不是很好。
Create(Application);
Create(Application.owner);
这两就是把self具体对象罢了
 
帮顶一个,顺便发个交流群:delphi天堂群:4654765,不守群规者勿扰
 
后三种情况就不讲了,第一种情况不指定属主,手工释放的问题是DELPHI缺少的垃圾回收功能.因些,要明确的是什么时候,什么地方回收.应用得不当,会导致内存泻漏
 
后退
顶部