您的位置:首页 > 移动开发 > IOS开发

IOS单例的实现

2016-03-28 00:42 375 查看
在开发IOS时,我们经常会使用到单例,比如 UIApplication 和 NSFileManager 。那么如何创建一个单例呢。

在这里我仅写出当前所知道的最简单的实现方法。当然还有别的方法可以实现单例,在这我就不列举了。

使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: