相关疑难解决方法(0)

是否可以在Objective-C ++中删除dispatch_once?

从C ++ 11开始,static已知本地变量将以线程安全的方式初始化(​​除非-fno-threadsafe-statics给出),如本问题所述。这是否意味着以下众所周知的模式:

+ (NSObject *)onlyOnce {
  static NSObject *object;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    object = [[NSObject alloc] init];
  });
  return object;
}
Run Code Online (Sandbox Code Playgroud)

可以替换为更短的:

+ (NSObject *)onlyOnce {
  static NSObject *object = [[NSObject alloc] init];
  return object;
}
Run Code Online (Sandbox Code Playgroud)

使用C ++ 11和更高版本的C ++语言方言将代码编译为Objective-C ++时?

c++ objective-c thread-safety objective-c++ c++11

5
推荐指数
1
解决办法
414
查看次数

标签 统计

c++ ×1

c++11 ×1

objective-c ×1

objective-c++ ×1

thread-safety ×1