Alo*_*nha 2 shared objective-c grand-central-dispatch ios
我正在制作一个单身课程供我使用.我见过单例类的代码是这样的:
//First Example
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
//Second Example
static SingletonSample *sharedObject;
+ (SingletonSample*)sharedInstance {
if (sharedObject == nil) {
sharedObject = [[super allocWithZone:NULL] init];
}
return sharedObject;
}
Run Code Online (Sandbox Code Playgroud)
秒似乎很好,可以理解.但我很困惑在第一个例子中,每次将sharedMyManager设置为nil并且每次都有一个共享管理器的分配,我怀疑的是第一个例子将如何返回类的相同引用(Singleton).
谢谢.
首先,当在函数中声明static时,它只被声明一次.所以,这条线
static MyManager *sharedMyManager = nil;
Run Code Online (Sandbox Code Playgroud)
第一次调用函数时,只执行一次.
在您使用的下一行中dispath_once,它将仅执行一次.所以创造sharedMyManager只会做一次.所以,这是创造单吨课程的完美方式.
| 归档时间: |
|
| 查看次数: |
1630 次 |
| 最近记录: |