OC和Swift單例的寫法

一 、OC中單例的寫法:1.普通單例的寫法? 2. 利用多線程來寫單例

#pragma mark --- 普通單例寫法----

+ (Manager *)shareInstance{

static Manager *manager = nil;

if (manager == nil) {

manager = [[Manager alloc] init];

}

return manager;

}

#pragma mark --- 多線程單例寫法----

+ (Manager *)sharesInstance{

static Manager *manager = nil;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

manager = [[Manager alloc] init];

});

return manager;

}

二、Swift中單例的寫法

class SingleTon: NSObject {

var name:String?

//? swift單例第一種寫法

/*

格式: static let 名字:類型 = {

let instance = 類型()

return instance

}()

*/

static let shareSingleTon:SingleTon = {

let instance = SingleTon()

return instance

}()

//? 單例寫法二

/*

格式:static let instance = 類名()

class func shareSingleTon()->返回值類型

{

return instance

}

*/

static let instance = SingleTon()

class func shareSingTon()->SingleTon {

return instance

}

}

//? Swift單例方法的調用

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

//? 單例方法一的調用

let mod1 = SingleTon.shareSingleTon

mod1.name = "張三"

let mod2 = SingleTon.shareSingleTon

print("mod2.name = \(mod2.name!)")

let mod3 = SingleTon.shareSingleTon

print("mod3.name = \(mod3.name!)")

//? 單例方法二的調用

let mode1 = SingleTon.shareSingTon()

mode1.name = "李四"

let mode2 = SingleTon.shareSingTon()

print("mode2.name = \(mode2.name!)")

let mode3 = SingleTon.shareSingTon()

print("mode3.name = \(mode3.name!)")

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容