Tag: 目标 c runtime

dispatch_once过度杀伤了+ ?

如果我在+[NSObject initialize]里面创build一个单例,我需要把我的代码放在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 编辑 我很担心这一点,因为我想确保所有的线程都会在调用+[Foo initialize]之后看到我已经设置了Bar 。 文档说+[NSObject initialize]是线程安全的,但这是否意味着它是内存安全的?