iOS:如何在ARC中销毁Singleton?我是不是该?

时间:2012-10-27 21:17:11

标签: ios singleton automatic-ref-counting dealloc

我有一个单例类,它会累积数据,直到数据写入我的数据库(如果你想知道我为什么用这种方式实现,请参阅here)。保存数据后,我想破坏单例。我怎么能在ARC中这样做?或者我是偏执狂,我是否需要销毁它?

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

我的单身人员的实施方式如下:

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

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

  return familyStatusSharedObject;
}

1 个答案:

答案 0 :(得分:20)

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

你不需要来销毁单身人士。无论如何都要在单例上有一个方法来删除你不再需要的任何实例变量,但是不需要做任何其他事情。