/* * Copyright (c) 2018-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import @interface A : NSObject @end @implementation A + (instancetype)sharedInstanceOK { static id _sharedInstance = nil; static dispatch_once_t onceTokenA; dispatch_once(&onceTokenA, ^{ _sharedInstance = [[self alloc] init]; }); return _sharedInstance; } @end @interface B : NSObject @end @implementation B + (instancetype)sharedInstanceBAD { static id _sharedInstance = nil; dispatch_once_t onceTokenB; dispatch_once(&onceTokenB, ^{ _sharedInstance = [[self alloc] init]; }); return _sharedInstance; } @end