OC
#import "SPManager.h"
@implementation SPManager
static SPManager *instance = nil;
+ (instancetype)shared {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[[self class] alloc] init];
});
return instance;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [super allocWithZone:zone];
});
return instance;
}
- (id)copyWithZone:(struct _NSZone *)zone {
return instance;
}
@end
Swift
class SPManager {
static let shared = SPManager()
private init() { }
}