2

说,我想创建一个里面有一些数据的单例。数据只动态分配一次,正如它在单例上所期望的那样。

但我现在想知道何时以及如何发布这些数据。我应该建立特殊的方法来破坏单例吗?更具体地说-何时执行此单例的方法“dealloc”?谁对此负责?

4

2 回答 2

2

一般来说,单例与普通对象没有什么不同。如果不再有(强)引用它,它就会被释放。通常,您只通过一个静态变量来控制一个对象。这个变量是在编译时创建的;因此它不能被释放。但是所有“真实”的对象都可以。

于 2012-04-08T16:32:27.993 回答
2

您可以声明显式调用的方法/函数。

最简单的方法是让一个静态 C++ 类持有它,然后在其析构函数中释放它。如果您有多个单例,那么这种方法不能很好地扩展,因为销毁顺序是实现定义的。

另一种选择(和更好的设计)是避免使用单例方法,并将其用作另一个类中的常规实例,该类在您的应用程序期间存在(应用程序委托是一个众所周知的示例)。

至于“何时”,它取决于它的依赖关系以及它的使用方式。尽量减少破坏中的外部影响也很好。

于 2012-04-08T17:46:39.427 回答