objective-c - 复制单例实例以存储在数组中

标签 objective-c ios singleton

我想获取一个被多个 View Controller 使用的单例类,复制它,并将其保存到一个数组中,该数组将显示在另一个 View Controller 中,其中的 TableView 将显示该类的多个实例。该数组最终将被存档,以便使用相同的数据进行检索。

在尝试此操作之前,有没有一种方法可以复制此单例实例,将其保存到数组中,重新初始化它以供下次使用,等等(无需获得与之前未初始化的对象完全相同的对象)?

最佳答案

这不是你想要的单例。
单例必须始终返回相同的实例
你想要的是一个普通的类,它可能有一个方便的类方法来为你提供一些预填充的对象。

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

但是您的单例类可以包含您希望显示的其他类的可变数量的实例。
因此,以这种方式,您所要求的是可能的,但没有单例上的复制部分。


I'm not sure where you are going with this and if it's the best way to go but here is an idea :

你可以有一个 singleton 类来保存另一个类的数组。所以你可以像这样调用你的 singleton

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

在您的 newOtherClassInstancePlease 方法中,您实现了将新对象存储到数组中的必要操作,您可以像这样分发它

NSArray *otherClassArray = [mySingleton allOtherClasses];

或者 NSMutableArray,如果你愿意的话。

有了它,您就可以共享、创建新的甚至删除对象。如果你在你的单例上实现了必要的方法。
但同样不要复制单例,如果单例实现良好,发送一个复制调用应该抛出异常,或者返回存在的单例实例。

关于objective-c - 复制单例实例以存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8395065/

相关文章:

ios - 在 UIViewControllerAnimatedTransitioning 中隐藏状态栏

ios - 如何获得范围 slider 中的最终值?

ios - XCode5 assets目录的切片工具如何使用切片的图片

ios - 如何使用传输实用程序从 S3 下载大量文件?

ios - iOS 的 IAP 收据验证

ios - (com.facebook.sdk.login 错误 304。)FBSDK 4.2 错误

objective-c - iOS indexOfObjectIdenticalTo : not working for strings

java - 如果 Singleton 不是线程安全的,这到底意味着什么?

Objective-C:使用单例还是使用类作为对象?

c++ - 无法在头文件和源文件中拆分具有静态成员函数的类