温
温柔一刀
Unregistered / Unconfirmed
GUEST, unregistred user!
to autumn:
首先,一般来讲addobject是使用你的控件的用户来调用的,与你的控件无关,
因此要由用户来释放,所以不存在你说的问题。
你上面的程序,是在控件的代码里面创建并加入了这些对象,那么确实存在这个问题。
解决方法之一是象你上面那样,没什么不好的,你既然要创建对象,那么管理它们当然是你的责任;
不过有一个简单得多的方法,那就是你的TaComboBoxIdObject声明成为TComponent,
创建的时候其Owner指向self(你的tacombobox实例),这样就一劳永逸,放心睡大觉了。
这就是TComponent的重要作用之一 -- 你要想创建对象,又不想管理它们的释放,最简单的办法就是声明成为
TComponent,不过记住create的时候owner一定要指定一个既有对象就可以了。
不过,有得必有失,TComponent既然有这套机制,必定付出更多代价,因此如果你要创建
成白上千个对象,可以测试一下有没有速度/内存上的差异(虽说一般应该没问题),选取最佳方案。
to bakubaku:
讨论问题要抓住根本,我一贯是反对“唯技术论”的 -- 开个玩笑 ~_*
首先,一般来讲addobject是使用你的控件的用户来调用的,与你的控件无关,
因此要由用户来释放,所以不存在你说的问题。
你上面的程序,是在控件的代码里面创建并加入了这些对象,那么确实存在这个问题。
解决方法之一是象你上面那样,没什么不好的,你既然要创建对象,那么管理它们当然是你的责任;
不过有一个简单得多的方法,那就是你的TaComboBoxIdObject声明成为TComponent,
创建的时候其Owner指向self(你的tacombobox实例),这样就一劳永逸,放心睡大觉了。
这就是TComponent的重要作用之一 -- 你要想创建对象,又不想管理它们的释放,最简单的办法就是声明成为
TComponent,不过记住create的时候owner一定要指定一个既有对象就可以了。
不过,有得必有失,TComponent既然有这套机制,必定付出更多代价,因此如果你要创建
成白上千个对象,可以测试一下有没有速度/内存上的差异(虽说一般应该没问题),选取最佳方案。
to bakubaku:
讨论问题要抓住根本,我一贯是反对“唯技术论”的 -- 开个玩笑 ~_*