iOS创建单例

OC单例

避免调用alloc创建新的对象

避免copy创建新的对象

+ (id)sharedInstance
{
    // 静态局部变量
    static Singleton *instance = nil;
    
    // 通过dispatch_once方式 确保instance在多线程环境下只被创建一次
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        // 创建实例
        instance = [[super allocWithZone:NULL] init];
    });
    return instance;
}

// 重写方法【必不可少】
+ (id)allocWithZone:(struct _NSZone *)zone{
    return [self sharedInstance];
}

// 重写方法【必不可少】
- (id)copyWithZone:(nullable NSZone *)zone{
    return self;
}

Swift 单例

public class FileManager { 
    public static let shared = FileManager() 
    private init() {    } 
}

public class FileManager {
    public static let shared = {
    // ....
    // ....
    return FileManager() 
  }() 
  private init() { }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容