swift之单例模式

swift单例模式的几种方式:

1. 全局变量

private let _singleton = Singleton()
class Singleton: NSObject {
    class var sharedInstance: Singleton {
        get {
            return _singleton
        }
    }
}

2. 内部变量

class Singleton {
    class var sharedInstance: Singleton {
        get {
            struct SingletonStruct {
                static let singleton: Singleton = Singleton()
            }
            return SingletonStruct.singleton
        }
    }
}

3. dispatch_once方式

class Singleton {
    class var sharedInstance: Singleton {
        get {
            struct SingletonStruct {
                static var onceToken:dispatch_once_t = 0
                static var singleton: Singleton? = nil
            }
            dispatch_once(&SingletonStruct.onceToken, { () -> Void in
                SingletonStruct.singleton = Singleton()
            })
            return SingletonStruct.singleton!
        }
    }
}
时间: 2024-08-02 11:03:47

swift之单例模式的相关文章

Swift实战-单例模式

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.GoF提出了23种设计模式,本系列将使用Swift语言来实现这些设计模式 概述 整个应用生命周期中,只存在唯一一个实例对象的类被称作单例,所以的模块共同使用这一个对象的设计叫做单例模式 单例模式Singleton具有如下优点: 多个模块共用同一个对象,保证了数据的唯一性 统一逻辑功能,具有较高的灵活性 在iOS开发中,本身也会接触到不少的系统单例,例如NSNotificaitonCente

swift 创建单例模式

一.意图 保证一个类公有一个实例,并提供一个访问它的全局访问点. 二.使用场景 1.使用场景 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时. 2.实现的重要三个步骤 私有化构造方法(Swift不支持) 使用一个静态变量保存实例的引用 提供一个全局的访问方法 三. Swift语言下的实现 Swift语言不支持变量及方法的权限,没有办法隐藏变量及方法,可以随意直接创建一个实例.单例的创建有很多写

Swift 实现单例模式Singleton pattern的三种方法

转自:点击打开链接 From my short experience with Swift there are three approaches to implement the Singleton pattern that support lazy initialization and thread safety. These approaches might change or become redundant as the language matures. Global constant

Swift下单例模式

import UIKit   class DataCenter: NSObject {       class let dataCenterObj:DataCenter = DataCenter()       class func getDataCenter() ->DataCenter {         return dataCenterObj     } }

swift语言实现单例模式

Swift实现单例模式 单例模式在各个语言中都有实现,swift语言推出已经几天了.通过这几天的看文档.特奉上写的Swift的单例实现,供大家学习交流,欢迎指正. ---若转载请注明出处,本人Github博客新地址- YueRuo's Blog - http://yueruo.github.io --- 因为Swift语言弱化了struct和class之间的界限,这里我分别给出自己写的两种的单例实现 class版本号: class SwiftSingleton{ class func share

用Swift实现一款天气预报APP(二)

上篇中主要讲了界面的一些内容,这篇主要讨论网络请求,获得天气的数据.具体的说是HTTP请求天气站点的API,得到返回的JSON数据.解析这些数据,并更新到界面内容中. 让用户知道当前的和之后几个小时的天气状况. 发起HTTP请求主要用到的是SDK的NSURLSession这个类,使用这个类对象可以创建请求任务并在这个任务中处理请求之后由服务器返回的JSON数据.在NSURLSession之前主要用到的是NSURLConnection.这两个类比较类似.只是在NSURLSession中增加了后台执

iOS四种多线程(swift和oc)

在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 Objective-c 两种语言讲解,双语幼儿园.OK,let's begin! 概述 这篇文章中,我不会说多线程是什么.线程和进程的区别.多线程有什么用,当然我也不会说什么是串行.什么是并行等问题,这些我们应该都知道的. 在 iOS 中其实目前有 4 套多线程方案,他们分别是: Pthreads

关于iOS多线程的总结

关于iOS多线程的总结 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 Objective-c 两种语言讲解,双语幼儿园.OK,let's begin! 概述 这篇文章中,我不会说多线程是什么.线程和进程的区别.多线程有什么用,当然我也不会说什么是串行.什么是并行等问题,这些我们应该都知道的. 在 iOS 中其实目前有 4 套多线程方案,他们分

关于iOS多线程,你看我就够了(已更新)

在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 Objective-c 两种语言讲解,双语幼儿园.OK,let't begin! 概述 这篇文章中,我不会说多线程是什么.线程和进程的区别.多线程有什么用,当然我也不会说什么是串行.什么是并行等问题,这些我们应该都知道的. 在 iOS 中其实目前有 4 套多线程方案,他们分别是: Pthreads