1
我使用的是常见的单例模式如下:然而ARC下sharedInstance模式的内存含义是什么?
+ (SomeClass *)sharedInstance {
static SomeClass *__sharedInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__sharedInstance = [[SomeClass alloc] init];
});
return __sharedInstance;
}
据我所知,SomeClass的对象被实例化的第一次我打电话[SomeClass的sharedInstance],什么时候SomeClass的获得dealloc'd?
这是在ARC下,编译器何时释放SomeClass静态对象?它保证在我的应用程序的其余生命周围?
+1你忘了一个细节; *这是共享实例的功能;根据定义,它们不应该在应用程序的运行会话期间被释放。如果您的应用程序已终止,系统将自动回收所有资源。* – bbum
由于默认情况下静态变量为'强',对象将由ARC保留。这是让对象在整个持续时间内保持活跃的原因。 – rmaddy
更强烈,并@maddy暗示;保证你的'dealloc'方法不会被调用,除非你的程序违反了内存管理模式。 – bbum