單例
Swift中的單例非常簡單,往小了說,用 let 去修飾,寫在類外,就是一個全局可用的單例。
如果想要像OC一樣寫一個單例類,也非常的簡單,如下
//單例類
import UIKit
//仿OC寫法
class danli: NSObject {
static let instance: danli = danli()
class func sharedDanli() -> danli {
return instance
}
}
//簡便寫法
class danli2 {
static let `default` = danli2()
}
相比OC要先在.h文件裏聲明一個方法,又要在.m裏面寫實現,又要加一個線程鎖是不是簡單了很多,OC寫法如下:
//首先.h文件裏聲明
//單例類
@interface danli : NSObject
+ (instancetype)sharedDanli;
@end
//然後.m文件裏寫實現
@implementation danli
+ (instancetype)sharedDanli {
static danli *dan = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dan = [self new];
});
return dan;
}