28.怎样在Swift中实现单例?
1.回忆一下OC中的单例实现
//AFNetworkReachabilityManager中的单例,省略了其他代码 @interface AFNetworkReachabilityManager : NSObject
+ (instancetype)sharedManager;
@end @implementation AFNetworkReachabilityManager + (instancetype)sharedManager { static AFNetworkReachabilityManager *_sharedManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedManager = [self manager]; }); return _sharedManager; } @end
2.Swift中的单例实现
在Swift中,有多种方式可以创建单例,比较常用也推荐使用的是如下的方式:
class GofUserSession { static let shareInstance = GofUserSession(); private init() {} }
提供一个空的私有init()方法,可以保证单例是真正唯一的,避免外部对象通过访问init方法创建单例类的其他实例。
无善无恶心之体,
有善有恶意之动,
知善知恶是良知,
为善去恶是格物。