单例 - iOS
程序员文章站
2022-03-07 16:04:37
...
Foundation 和 Application Kit 框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例.
举例来说,NSFileManager 和 NSWorkspace 类在使用时都是基于进程进行单件对象的实例化.当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配和初始化.单件对象充当控制中心的角色,负责指引或协调类的各种服务.如果类在概念上只有一个实例(例如:NSWorkspace),就应该产生一个单件实例,而不是多个实例;
如果未来可能有多个实例,可以使用单件实例机制,而不是工厂方法或函数.
+ (instancetype)shareInstance {
static YHAccessAuthorization *shareInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shareInstance = [[self alloc] init];
});
return shareInstance;
}