我有一个像所有单身人士一样初始化的单身人士,有这样的事情:
+ (MySingleton *)sharedInstance
{
static MySingleton *sharedMyInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyInstance = [[MySingleton alloc] init];
});
return sharedMyInstance;
}
在我的情况下,我想添加一些代码来初始化单例,但因为sharedInstance是一个类方法,所以我不能从那里调用实例方法。
所以我总是要有这种模式:
MySingleton *sing = [MySingleton sharedInstance];
[sing initialize];
好的,我可以这样做
MySingleton *sing = [[MySingleton sharedInstance] initialize];
但是这会产生另一个问题,因为如果在这一点上初始化单例是我唯一需要的东西,那么sing
就没有被使用了,这是丑陋的代码。
我想我可以做到
[[MySingleton sharedInstance] initialize];
并且Xcode不会抱怨,但这听起来不太好。
还有其他办法吗?
答案 0 :(得分:2)
检查你的代码;-)特别是这一行:
sharedMyInstance = [[MySingleton alloc] init];
您必须实现init
,并且您可以在其中初始化您的单例(AKA共享实例)的实例变量。它将在第一次使用共享实例时调用。