IOS单例的实现
2016-03-28 00:42
375 查看
在开发IOS时,我们经常会使用到单例,比如 UIApplication 和 NSFileManager 。那么如何创建一个单例呢。
在这里我仅写出当前所知道的最简单的实现方法。当然还有别的方法可以实现单例,在这我就不列举了。
这里推荐一篇很全面的关于创建单例的文章
http://my.oschina.net/jeans/blog/541750
英文原文
http://krakendev.io/blog/the-right-way-to-write-a-singleton?utm_content=buffer0072d&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer
在这里我仅写出当前所知道的最简单的实现方法。当然还有别的方法可以实现单例,在这我就不列举了。
使用objective-c的写法(利用gcd)
// Singleton.h #import <Foundation/Foundation.h> @interface Singleton : NSObject +(instancetype) sharedInstance; @end // Singleton.m #import "Singleton.h" @implementation Singleton static Singleton sharedInstance = nil; +(instancetype) sharedInstance { static dispatch_once_t once; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }; return sharedInstance; } @end
使用swift的写法
在swift 1.2版本中,类中终于可以声明static变量了。所以实现单例的方法非常简单,但需要注意的是,必需将类的构造函数声明为private,避免其他对象利用单例类的init()函数来创造出单例的其它实体。// singleton.swift import Cocoa class Singleton { static let sharedInstance = Singleton() private init() { print("init") } }
这里推荐一篇很全面的关于创建单例的文章
http://my.oschina.net/jeans/blog/541750
英文原文
http://krakendev.io/blog/the-right-way-to-write-a-singleton?utm_content=buffer0072d&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer
相关文章推荐
- iOS蓝牙4.0开发
- iOS-NSLog发布时取消打印日志
- iOS - 断言处理与调试
- [一句秒懂]animation flash动画之一
- ios duang 动画简记
- ios摄像头的使用权限判断
- Mac系统和iphone概述
- iOS将相机界面的英文改成中文
- iOS 为label加删除线
- ios动画中抖动动画效果的实现与CALayer动画的基本理解
- OC阅读笔记四:消息转发
- 浅谈iOS内存管理
- IOS 日期的简洁格式展示
- IOS学习 AVAudioRecorder 录音 存储在沙盒中
- IOS学习 沙盒位置,沙盒存储的三种方式:plist文件,偏好设置,归档
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- 关于IOS开发的基本书籍推荐
- 关于IOS开发的基本书籍推荐
- ios_base::sync_with_stdio() 的具体用法
- iOS 开发技巧