说,我想创建一个内部有一些数据的单例。数据只能动态分配一次,就像它在单身人士所期望的那样。
但我现在想知道何时以及如何发布这些数据。我应该建立破坏单身人士的特殊方法吗?更具体一点 - 当执行此单例的方法'dealloc'时?谁对此负责?
答案 0 :(得分:2)
通常,单例与普通对象没有区别。如果没有(强)引用它,它就会被释放。通常,您只能通过静态变量控制一个对象。该变量在编译时创建;因此它无法释放。但所有“真正的”对象都可以。
答案 1 :(得分:2)
您可以声明显式调用的方法/函数。
最简单的方法是让一个静态C ++类保存它,然后在它的析构函数中释放它。如果你有多个单例,那么这种方法不能很好地扩展,因为销毁顺序是实现定义的。
另一种替代方法(和更好的设计)是避免使用单例方法,并将其用作另一个类中的常规实例,该类在应用程序的持续时间内存在(app委托是一个众所周知的例子)。 p>
至于“何时”,它取决于它的依赖性以及如何使用它。尽量减少破坏中的外部影响也是很好的。