复制单例的实例以存储在数组中

时间:2011-12-06 03:39:56

标签: objective-c ios singleton

我想采用一个由多个视图控制器使用的单例类,将其复制并保存到一个数组中,该数组将显示在另一个视图控制器中,并带有一个表视图,该视图将显示该类的多个实例。该数组最终将被归档以使用相同的数据进行检索。

在我尝试这个之前,有没有办法可以复制这个单例实例,将它保存到数组中,重新初始化它以供下次使用,等等(没有得到完全相同的以前未初始化的对象)?

1 个答案:

答案 0 :(得分:4)

这不是你想要的单身人士 单身must always返回same instance 你想要的是一个普通的类,可能有一个方便类方法来为你提供一些预先填充的对象。

如果可以创建一个以上的对象实例,那么它就不再是单例了。

但是你的单身类可以容纳你想要显示的其他类的可变数量的实例 因此,以这种方式你所要求的是可能的,但没有单身人士的复制部分。


  

我不确定你要去哪里,如果这是最好的方法   去,但这是一个想法:

你可以拥有一个singleton类来保存其他类的数组。所以你可以这样打电话给你singleton

TheSingletonClassName *mySingleton = [TheSingletonClassName sharedTheSingletonClassName];
OtherClass *myOtherClass = [mySingleton newOtherClassInstancePlease];

newOtherClassInstancePlease方法中,您实现了将新对象存储到数组中所必需的东西,您可以像这样分发

NSArray *otherClassArray = [mySingleton allOtherClasses];

如果您愿意,可以使用NSMutableArray。

通过它,您将能够共享,创建新的甚至删除对象。如果你在你的单身人士上实施必要的方法 但是再次不要复制单例,如果单例很好实现发送它,则复制调用应该抛出异常,或者返回存在的单个单例实例。