单例
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;
}