关于Dispose SWT资源的思考与疑问

我们知道,在SWT中,有两条关于Dispose的法则:

1。如果你创建了它,那么就dispose它。你应当释放那些使用构造器创建了的SWT对象。

2。dispose一个父组件会dispose掉所有的子组件。

由 此可以得知,由于Color,Cursor,Font,GC,Image,Printer,Region都是在DeviceData之上创建,所以如果使 用构造器的话,就必须要手工把这些资源dispose掉,而如果使用Font font = control.getFont ()这样的方式的话,就不可以调用font.dispose()方法,因为它不是被我们创建的。

还可以得知,因为Widget及其所有子类的构造器都需要一个父Widget作参数(常用的也就是Shell或者Composite),所以是不是得到这样的结论:

在RCP应用中,当程序关闭时,Display会被Dispose,那么最顶层的Shell也会被dispose,于是递归下来,所有的Widget也会被 dispose了?所以只需要对使用构造器创建的Color,Cursor,Font,GC,Image,Printer,Region调用 Dispose方法就可以了?

还有一个疑问,项目中肯定要用到不计其数的image的,这种情况下,是在每一个用到Image的Widget上添加disposeListener好呢,还是最后在程序关闭的时候dispose所有的image?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值