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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章