單例那點事

單例用途

資源共享(多個類都會用到這塊資源)而且和APP的生命周期等長。

單例代碼

#import "SingletonClass.h"
static SingletonClass *singleton;

@implementation SingletonClass

+ (void)initialize{
    [SingletonClass sharedInstance];
}

+ (instancetype)sharedInstance{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        singleton = [[SingletonClass alloc]init];
    });
    return singleton;
}

- (instancetype)init{
    if (self = [super init]) {
        if (singleton) {
            return singleton;
        }
    }
    return self;
}

@end
重寫initialize和init方法目的是為了,無論是通過[SingletonClass sharedInstance]創(chuàng)建,還是
通過[[SingletonClass alloc]init]創(chuàng)建都保證是同一個單例。

alloc和init區(qū)別

alloc分配內(nèi)存空間
init初始化數(shù)據(jù)

兩者區(qū)別就像你造了一張A4紙(alloc),然后在紙上素描(init)

load和initialize區(qū)別

load文件被加載時就會調(diào)用,與complile sources中文件的位置有關(guān)系。
initialize第一次調(diào)用該類時候調(diào)用。
comlile sources

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容