iOS創(chuàng)建單例

OC單例

避免調用alloc創(chuàng)建新的對象

避免copy創(chuàng)建新的對象

+ (id)sharedInstance
{
    // 靜態(tài)局部變量
    static Singleton *instance = nil;
    
    // 通過dispatch_once方式 確保instance在多線程環(huán)境下只被創(chuàng)建一次
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        // 創(chuàng)建實例
        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() { }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容