最近看了一篇文章(原文链接),介绍一个新的概念叫做[weak singleton],这是一种特殊的单例,这个单例有一个很有意思的特性:在所有使用该单例的对象都释放后,单例对象本身也会自己释放。平常我们创建的单例,在程序的生命周期内,都会一直存活着。「weak singleton」的创建方式如下:
+ (id)sharedInstance
{
static __weak ASingletonClass *instance;
ASingletonClass *strongInstance = instance;
@synchronized(self) {
if (strongInstance == nil) {
strongInstance = [[[self class] alloc] init];
instance = strongInstance;
}
}
return strongInstance;
}