单例模式(Singleton Pattern) 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类,它提供全局访问方法。
单例模式三要点:
某个类只能有一个实例
它必须自行创建这个实例
它必须自行向整个系统提供这个实例
使用场景:当一个系统要求只有一个实例时可使用单例模式。比如,存储用户信息的用户管理类,在登录成功后,其它各个业务模块都可能用到。所以就会考虑用单例。
在iOS中单例模式实现方式是在类中编写名为sharedInstance的方法,该方法只会返回全类共用的单例实例,而不会在每次调用时都创建新的实例。
.h文件代码示例:
@interface GizManager : NSObject
///单例模式
+ (instancetype)shareInstance;
///@brief 获取当前Wi-Fi的ssid
+ (NSString *)getCurrentWifi;
@property (nonatomic, strong) NSString *ssid;
@property (nonatomic, strong) NSString *key;
.m文件代码示例:
static GizManager *_gizManager = nil;
@implementation GizManager
+ (instancetype)shareInstance{
if (_gizManager == nil) {
_gizManager = [[self alloc] init];
}
return _gizManager;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t oneToken;
dispatch_once(&oneToken, ^{
if (_gizManager == nil) {
_gizManager = [super allocWithZone:zone];
}
});
return _gizManager;
}
要注意的是:单例到每个页面需要提前调用一下
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
GizManager *manager = [GizManager shareInstance];
}