-2
在我的程序中,我应该用几种模式初始化我的类而不创建新的实例。 这可能吗?也许单身?我想只有一个实例,并且不止一次调用init方法。有人能告诉我,如果这是可能是这样的:Objective-C类初始化或单例
[[MyObject sharedObject] initWithMode:mode1];
及更高版本:
[[MyObject sharedObject] initWithMode:mode2];
在我的程序中,我应该用几种模式初始化我的类而不创建新的实例。 这可能吗?也许单身?我想只有一个实例,并且不止一次调用init方法。有人能告诉我,如果这是可能是这样的:Objective-C类初始化或单例
[[MyObject sharedObject] initWithMode:mode1];
及更高版本:
[[MyObject sharedObject] initWithMode:mode2];
一个单是不会帮助你在这里,正是因为它是一个共享实例。如果ObjectA在模式1中进入,然后ObjectB将无法在模式2中初始化它。即使ObjectB可以,它也会更改ObjectA期望与Singleton一起工作的上下文,这将导致意外的行为。
有几种方法可以解决这个问题,但是如果不知道更多你想要完成什么,那么我会建议每种模式的子类作为这些类的不同实例。
你试图通过这样做解决什么问题?这看起来很奇怪。 –
为什么不是'setMyObjectMode'而不是'initWithMode'这意味着初始化,所以也许是内存泄漏......? – Larme
您应该**从不**在对象的整个生命周期中调用多个初始化方法。 @ Larme的建议很好。或者,根本不要使用单身。 – bbum