我想采用一个由多个视图控制器使用的单例类,将其复制并保存到一个数组中,该数组将显示在另一个视图控制器中,并带有一个表视图,该视图将显示该类的多个实例。该数组最终将被归档以使用相同的数据进行检索。
在我尝试这个之前,有没有办法可以复制这个单例实例,将它保存到数组中,重新初始化它以供下次使用,等等(没有得到完全相同的以前未初始化的对象)?
答案 0 :(得分:4)
这不是你想要的单身人士
单身must always
返回same instance
你想要的是一个普通的类,可能有一个方便类方法来为你提供一些预先填充的对象。
如果可以创建一个以上的对象实例,那么它就不再是单例了。
但是你的单身类可以容纳你想要显示的其他类的可变数量的实例 因此,以这种方式你所要求的是可能的,但没有单身人士的复制部分。
我不确定你要去哪里,如果这是最好的方法 去,但这是一个想法:
你可以拥有一个singleton
类来保存其他类的数组。所以你可以这样打电话给你singleton
TheSingletonClassName *mySingleton = [TheSingletonClassName sharedTheSingletonClassName];
OtherClass *myOtherClass = [mySingleton newOtherClassInstancePlease];
在newOtherClassInstancePlease
方法中,您实现了将新对象存储到数组中所必需的东西,您可以像这样分发
NSArray *otherClassArray = [mySingleton allOtherClasses];
如果您愿意,可以使用NSMutableArray。
通过它,您将能够共享,创建新的甚至删除对象。如果你在你的单身人士上实施必要的方法 但是再次不要复制单例,如果单例很好实现发送它,则复制调用应该抛出异常,或者返回存在的单个单例实例。