IOS单例的实现

在开发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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值