如果我在里面创建一个单例+[NSObject initialize],我是否需要将我的代码放在一个dispatch_once块中?
static NSObject * Bar;
@implementation Foo
+ (void)initialize {
if (self == [Foo class]) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Bar = [NSObject new];
});
}
}
@end
Run Code Online (Sandbox Code Playgroud)
编辑
我很关心这个,因为我想确保所有线程都会看到我调用Bar之后设置的+[Foo initialize].文档说+[NSObject initialize]是线程安全的,但这是否意味着它是内存安全的?
concurrency objective-c objective-c-runtime grand-central-dispatch ios