我有一个在我的 (Objective-C++) 代码中使用的编译外部库。该库有一个单例类,用于在整个应用程序使用期间存储一些信息。我真的需要一种方法能够删除加载的信息并在应用程序中间重新加载它。或者重新加载应用程序,以便重新初始化此单例。
在头文件中无法重置类信息。
我获取实例的方式是:
Singleton::getInstance();
在头文件中显示为:
static Singleton& getInstance();
我想要一种能够删除此实例并重新初始化另一个实例的方法。
有什么办法吗?此单例仅在一个(主)线程上使用。
额外信息
当应用程序首次加载时,我必须调用:
Singleton::getInstance().load();
以便它从应用程序的文档目录加载信息并创建内部结构。我在应用程序运行过程中替换了 Documents 目录中的那些文件,并希望它重新初始化。如果我再次调用上面的函数,我会得到一个错误,因为编写这个库的人不允许加载函数被调用两次。
我尝试了一些东西,比如:
delete &Singleton::getInstance();
但我不知道之后应该如何重新初始化它。作为呼唤
Singleton::getInstance();
使应用程序崩溃。
最佳答案
除非 API 为您提供了一种方法,否则这可能是不可能的。
但我会在调用删除后尝试重新运行“加载”函数...
关于iphone - 如何在应用程序中间重新初始化我无法完全控制的单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348229/