alo*_*loo 1 singleton objective-c grand-central-dispatch ios
我使用常见的单例模式如下:
+ (SomeClass *)sharedInstance {
static SomeClass *__sharedInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__sharedInstance = [[SomeClass alloc] init];
});
return __sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)
我知道SomeClass对象在我第一次调用[SomeClass sharedInstance]时被实例化,但是,SomeClass何时被dealloc'd?
这是在ARC下,那么编译器何时释放SomeClass静态对象?是否保证在我的应用程序的剩余生命周期?
由于声明__sharedInstance属于内部sharedInstance范围,因此无法通过任何其他方法直接访问.这意味着没有其他人可以将其设置为nil,因此它将被保留,直到您的应用程序将被终止.
还值得一提的是,dealloc当系统在终止时释放内存时,您无法确定是否会调用单例的方法,主要是因为:
dealloc在此之前调用您的方法.dealloc方法,那么您无法在终止时预测对象破坏的顺序(例如您使用的框架),从而使您的代码不可靠.| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |