在开发过程中,有时候我们需要获得一个指向当前对象的指针,这时候我们通常使用this指针。但是在某些情况下,使用this指针得到一个强引用是太晚了。

这个问题在微软的开发博客中曾经被提到过。在一篇博客中,作者介绍了他们在开发中遇到的一个问题。他们开发了一个COM对象,这个对象需要向另一个对象发送消息。为了实现这个功能,他们使用了一个成员函数来调用另一个对象的成员函数。这个成员函数需要一个指向当前对象的指针,因此他们使用了this指针。

这个实现看起来很不错,但是却存在一个问题。如果在调用成员函数的过程中,当前对象被释放了,那么使用this指针得到的强引用就变得没有意义了。在调用某些函数时,这个问题会导致程序崩溃。

为了解决这个问题,作者提出了一个解决方案。他们使用了一个成员变量来保存当前对象的弱引用。在需要使用当前对象时,可以先通过成员变量获得当前对象的弱引用,然后再使用弱引用获得当前对象的强引用。这样就能够避免在使用this指针时得到一个无意义的强引用。

虽然这个解决方案可能会增加一些额外的代码,但它能够避免一些潜在的问题。因此,在使用this指针时我们应该尽量避免得到一个强引用,而是使用弱引用来保证程序的可靠性。

总之,从this指针得到一个强引用太晚了。在使用this指针时,我们应该尽量避免得到一个无意义的强引用,而是使用弱引用来保证程序的稳定运行。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/