10

我有一个单例类,它会累积数据,直到将数据写入我的数据库(如果您想知道我为什么要以这种方式实现,请参见此处)。保存数据后,我想销毁单例。我怎样才能在 ARC 中做到这一点?或者我是偏执狂,我需要完全摧毁它吗?

*您可能会说这是问题的重复,但此处接受的答案不够具体,无法提供帮助。它说“您可以声明显式调用的方法/函数。” 这个代码可能是什么样的?如果我不能在方法外释放对象,我怎么可能在方法内将它拉出来?它还说“最简单的方法是让一个静态 C++ 类持有它,然后在其析构函数中释放它。” 我不知道 C++,但是 - 你真的可以在你的应用程序代码中放置一个 C++ 类吗?

我的单例是这样实现的:

+(NHCFamilyStatus *)familyStatus
{
  static dispatch_once_t pred;
  static NHCFamilyStatus *familyStatusSharedObject=nil;

    dispatch_once(&pred, ^
    {
        familyStatusSharedObject = [[NHCFamilyStatus alloc] init];
    });

  return familyStatusSharedObject;
}
4

1 回答 1

20

如果你销毁这个单例,你将永远无法再次创建它(这就是 dispatch_once 调用的意思)。

不需要销毁单例。无论如何,在单例上都有一个方法可以删除您不再需要的任何实例变量,但不需要做任何其他事情。

于 2012-10-27T21:28:00.517 回答