相关疑难解决方法(0)

dispatch_once是否在+ [NSObject initialize]内部过度杀伤?

如果我在里面创建一个单例+[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

5
推荐指数
2
解决办法
1162
查看次数