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

 更新时间:2016年12月24日 11:07:55   作者:ParadiseMayCry  
这篇文章主要介绍了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() {} 
} 

在方法内定义静态变量

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

相关文章

  • iOS tableView上拉刷新显示下载进度的问题及解决办法

    iOS tableView上拉刷新显示下载进度的问题及解决办法

    这篇文章主要介绍了 iOS tableView上拉刷新显示下载进度的问题及解决办法,需要的朋友可以参考下
    2017-03-03
  • iOS中TableView如何统一数据源代理详解

    iOS中TableView如何统一数据源代理详解

    这篇文章主要给大家介绍了关于iOS中TableView如何统一数据源代理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07
  • IOS仿今日头条滑动导航栏

    IOS仿今日头条滑动导航栏

    今天仿今日头条滑动导航和网易首页导航封装类优化相似,这个也是解决手势冲突,UIPanGestureRecognizer与ScrollView的手势冲突
    2016-01-01
  • iOS实现抽屉效果

    iOS实现抽屉效果

    这篇文章主要为大家详细介绍了iOS实现抽屉效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • IOS图片设置毛玻璃效果

    IOS图片设置毛玻璃效果

    这篇文章主要介绍了IOS图片设置毛玻璃效果的相关资料,需要的朋友可以参考下
    2016-03-03
  • 详谈iPhoneX截图如何带

    详谈iPhoneX截图如何带

    下面小编就为大家分享一篇详谈iPhoneX截图如何带"刘海"和圆角,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Objective C从远程url下载图片方法汇总

    Objective C从远程url下载图片方法汇总

    本文给大家分享了2则使用Objective C从远程url下载图片的方法,都是个人项目中使用的,汇总下推荐给大家,有需要的小伙伴可以参考下。
    2015-05-05
  • IOS中内存管理那些事

    IOS中内存管理那些事

    这篇文章主要介绍了IOS中内存管理那些事的相关资料,需要的朋友可以参考下
    2015-11-11
  • iOS实现淘宝上拉进入详情页交互效果

    iOS实现淘宝上拉进入详情页交互效果

    最近遇到一个项目,项目中某个新需求的交互要求仿照淘宝上拉从下往上弹出宝贝详情。所以死打开淘宝APP仔细看了看,然后自己写了写,现在感觉效果差不多了,记录一下分享给大家,方法自己和大家需要的时候查看借鉴,感兴趣的朋友们下面跟着小编一起来学习学习吧。
    2016-11-11
  • 实例讲解iOS应用开发中UIPickerView滚动选择栏的用法

    实例讲解iOS应用开发中UIPickerView滚动选择栏的用法

    这篇文章主要介绍了iOS应用开发中UIPickerView滚动选择栏的用法,示例代码基于传统的Objective-C,需要的朋友可以参考下
    2016-04-04

最新评论