2014-02-23 52 views
1

我有一个像这样的初始化,像所有的单身人士,有一些单身:辛格尔顿+初始化代码

+ (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中不会抱怨,但这并不好听。

是否有另一种方法可以做到这一点?

回答

2

检查你的代码;-)具体线路:

sharedMyInstance = [[MySingleton alloc] init]; 

您必须实现init并没有在那里你会初始化你单身(又名共享实例)的实例变量。它将被称为第一次使用共享实例。

+0

对不起。我一定很累...... :) – SpaceDog

+1

没问题! ;-) – atxe