今天發現原來有兩種可實現單例模式的方法,現在貼出來與大家分享
第一種:這個是以前一直在使用的。
static Control *mControl;
...
+(id)getShare
{
if (mControl == nil) {
mControl = [[Control alloc] init];
}
return mControl;
}
第二種:這是今天新發現的。
+ (BDMultiDownloader *)shared
{
static dispatch_once_t once;
static BDMultiDownloader * singleton;
dispatch_once(&once, ^ { singleton = [[BDMultiDownloader alloc] init]; });
return singleton;
}
dispatch_once_t這是系統函數