【发布时间】:2013-07-27 16:37:35
【问题描述】:
单例的最佳模式是什么?我经常使用
+ (SomeManager *)shared
{
static SomeManager * _SomeManager = nil;
if (_SomeManager) {
return _SomeManager;
}
_SomeManager = [[SomeManager alloc] init];
return _SomeManager;
}
这个线程安全吗?如果没有,要确保安全吗?
【问题讨论】:
-
NSLockor@synchronizedordispatch_onceor etc... -
请记住,“单例”和“线程安全对象”是两个完全不同的东西。
-
单例的延迟分配,通常代表少量的内存字节,是一种退化模式。在 +[SomeManger 初始化] 中分配你的单例,保证在类加载时只被调用一次。
标签: objective-c multithreading cocoa