要求TComponent作为所有者来实例化某种对象似乎完全无关紧要.为什么有这么多Delphi组件需要这个?
例如,TXMLDocument需要TComponent对象来实例化.
为什么会这样,如果有充分的理由,我应该在那里使用"做正确的事"?
所有者组件应该管理其拥有的所有组件.当所有者被销毁时,拥有的组件会自动销毁.
这有助于开发人员只需从工具调色板中拖出组件,将其放在表单上,然后连接事件即可完成工作,而无需担心管理组件的生命周期.
表单是放在其上的所有组件的所有者.Application对象是表单的所有者.当应用程序关闭时,Application对象将被销毁,从而销毁表单和所有组件.
但是在创建组件时并不是必需的.如果将Nil传递给参数,则将在没有所有者的情况下创建组件,在这种情况下,您将负责管理组件的生命周期.
所有TComponent后代都需要Owner,它在TComponent构造函数中定义.Owner组件负责销毁所有Owned组件.
如果你想控制生命时间,你可以传递nil作为参数.