swift 中的单例

2021-04-12  本文已影响0人  90后的晨仔

今天忽然想写个单例不知道咋写了,所以想起来之前看的王巍 (onevcat). “Swifter - Swift 必备 Tips (第四版)。这本书中的写法,所以想想还是记录一下吧。
今天忽然想写个单例不知道咋写了,所以想想还是记录一下吧。

@implementation MyPeter
+ (id)sharedManager {
    static MyPeter * staticInstance = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        staticInstance = [[self alloc] init];
    });
    return staticInstance;
}
@end
static MyPeter * staticInstance = nil;
@implementation MyPeter
+(MyPeter *)sharedManager{
    return [[self alloc] init];
}
- (instancetype)init{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        staticInstance = [super init];
    });
    return staticInstance;
}

+(instancetype)allocWithZone:(struct _NSZone *)zone{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        staticInstance = [super init];
    });
    return staticInstance;
}


- (nonnull id)copyWithZone:(nullable NSZone *)zone{
    return staticInstance;
}
-(nonnull id)mutableCopyWithZone:(nullable NSZone *)zone{
    return staticInstance;
}




@end
  class var shared : MyPeter {
          struct Static {
                static let sharedInstance : MyPeter = MyPeter()
            }
            return Static.sharedInstance
        }
private let sharedInstance = MyPeter()
class  MyPeter: NSObject {
 class var shared : MyPeter {
        return sharedInstance
    }
 
}
class MyPeter  {
    static let shared = MyPeter()
    private init() {}
}
上一篇下一篇

猜你喜欢

热点阅读