Swift - 实现单例模式
2016-03-16 16:17
489 查看
过去Swift要实现单例,无非是这三种方式:全局变量,内部变量和dispatch_once方式。但都略显繁琐。
后来从1.2版本起,Swift中添加了如 static let 和 static var 这样的类变量的支持,这样单例的实现又简化了许多。
下面提供两种比较好的单例写法。
要注意:不管哪种写法都要注意将init()方法私有化。因为在Swift中,所有对象的构造器默认都是public,需要重写init让其成为私有的,防止其他对象使用这个类的默认的’()’初始化方法来创建对象。
下面直接上两种写法的代码:
方法1
方法2
后来从1.2版本起,Swift中添加了如 static let 和 static var 这样的类变量的支持,这样单例的实现又简化了许多。
下面提供两种比较好的单例写法。
要注意:不管哪种写法都要注意将init()方法私有化。因为在Swift中,所有对象的构造器默认都是public,需要重写init让其成为私有的,防止其他对象使用这个类的默认的’()’初始化方法来创建对象。
下面直接上两种写法的代码:
方法1
class AppManager { static let _sharedInstance = AppManager() class func getSharedInstance() -> AppManager { return _sharedInstance } private init() {} // 私有化init方法 } import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //使用方式 AppManager.getSharedInstance() } }
方法2
class AppManager { static let sharedInstance = AppManager() private init() {} // 私有化init方法 } import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //使用方式 AppManager.sharedInstance } }
相关文章推荐
- Swift - 正则表达式的几种使用方式
- Swift - UISearchController初步学习
- Swift - 设置应用程序图标的提醒个数(右上角小红圈)
- Swift - iOS应用的国际化与本地化
- Swift - 实现发送邮件功能
- 在swift中使用oc文件
- Swift - 实现发送短信的功能
- Swift - 添加、修改、删除通讯录联系人
- 如何使用Instruments诊断App(Swift版)
- Swift - 读取通讯录信息
- Swift开发第五篇——四个知识点(Struct Mutable方法&Tuple&autoclosure&Optional Chain)
- 【游戏客户端开发】 IOS开发——Swift基础篇2
- 【游戏客户端开发】 IOS开发——Swift基础篇1
- Swift - 使用访问系统的通讯录交互界面
- swift单例模式
- Swift - 手机摇晃的监测和响应
- Swift - 判断设备方向(或监听设备方向的改变)
- Swift - 使用NSURLSession加载数据、下载、上传文件
- Swift中的内存管理
- Swift - 同步请求和异步请求