代码改变世界

单例

2018-12-26 15:37  法子  阅读(186)  评论(0编辑  收藏  举报

希望能在全局方便访问的实例,或者在 app 的生命周期中只应该存在一个的对象,一般都会使用单例来存储和访问

Swift

class MyManager  {
    static let shared = MyManager()
    //防止其他地方初始化
    private init() {}
}

Object-C

@interface MyManager : NSObject
+ (id)sharedManager;
@end

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