全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

IOS  Swift3 四种单例模式详解及实例

Swift3 单例模式

常见的有这么几种方法

第一种简单到爆的

final class Single: NSObject { 
  static let shared = Single() 
  private override init() {} 
} 

final关键字的作用是这个类或方法不希望被继承和重写

第二种

public extension DispatchQueue { 
  private static var onceToken = [String]() 
  public class func once(_ token: String, _ block: () -> Void) { 
    objc_sync_enter(self) 
    defer { 
      objc_sync_exit(self) 
    } 
    if onceToken.contains(token) { 
      return 
    } 
    onceToken.append(token) 
    block() 
  } 
} 
 
final class Single2: NSObject { 
  static func shared() -> Single2 { 
    struct Singleton { 
      static var single: Single2? 
    } 
    DispatchQueue.once(NSUUID().uuidString) { 
      Singleton.single = shared() 
    } 
    return Singleton.single! 
  } 
} 

第二种完全是OC风格的单例,但是由于Swift3中废弃了原来的dispatch_once_t,所以需要先给DispatchQueue添加一个extension,实现原先的dispatch_once_t效果

第三种

private let single = Single3() 
final class Single3: NSObject { 
  static var shared: Single3 { 
    return single 
  } 
} 

由于Swift3中加强了权限控制,导致如果重写private override init()方法会报错,所以这种写法在Swift3中的安全性未知。

第四种

final class Single4: NSObject { 
  static var shared: Single4 { 
    struct Static { 
      static let instance: Single4 = Single4() 
    } 
    return Static.instance 
  } 
  private override init() {} 
} 

在方法内定义静态变量

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Swift  # 单例  # 单例模式详解  # 四种单例模式详解  # Swift 5.1 之类型转换与模式匹配的教程详解  # 深入讲解Swift中的模式匹配  # 深入理解Swift中单例模式的替换及Swift 3.0单例模式的实现  # swift where与匹配模式的实例详解  # 深入解析Swift代理模式  # 仓库模式及其在Swift 项目中的应用详解  # 重写  # 第二种  # 希望能  # 报错  # 谢谢大家  # 第一种  # 先给  # 第三种  # 法会  # 几种方法  # 第四种  # span  # style  # init  # private  # override  # extension  # public  # DispatchQueue  # color 


相关文章: 公司网站设计制作厂家,怎么创建自己的一个网站?  建站之星与建站宝盒如何选择最佳方案?  宝塔新建站点为何无法访问?如何排查?  如何在阿里云完成域名注册与建站?  建站之星免费版是否永久可用?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何通过云梦建站系统实现SEO快速优化?  ,南京靠谱的征婚网站?  小型网站建站如何选择虚拟主机?  建站主机数据库如何配置才能提升网站性能?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何选择最佳自助建站系统?快速指南解析优劣  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  建站主机服务器选购指南:轻量应用与VPS配置解析  实惠建站价格推荐:2025年高性价比自助建站套餐解析  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何快速启动建站代理加盟业务?  如何挑选最适合建站的高性能VPS主机?  ,sp开头的版面叫什么?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  制作网站的模板软件,网站怎么建设?  如何通过IIS搭建网站并配置访问权限?  如何选择服务器才能高效搭建专属网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  香港服务器租用费用高吗?如何避免常见误区?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何在阿里云通过域名搭建网站?  建站与域名管理如何高效结合?  北京网站制作公司哪家好一点,北京租房网站有哪些?  小程序网站制作需要准备什么资料,如何制作小程序?  常州企业网站制作公司,全国继续教育网怎么登录?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  自助网站制作软件,个人如何自助建网站?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  ,网页ppt怎么弄成自己的ppt?  怎么将XML数据可视化 D3.js加载XML  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何有效防御Web建站篡改攻击?  想学网站制作怎么学,建立一个网站要花费多少?  建站之星如何快速更换网站模板?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  再谈Python中的字符串与字符编码(推荐)  湖北网站制作公司有哪些,湖北清能集团官网?  定制建站流程步骤详解:一站式方案设计与开发指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。