單例那點事

單例用途

資源共享(多個類都會用到這塊資源)而且和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]創建,還是
通過[[SingletonClass alloc]init]創建都保證是同一個單例。

alloc和init區別

alloc分配內存空間
init初始化數據

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

load和initialize區別

load文件被加載時就會調用,與complile sources中文件的位置有關系。
initialize第一次調用該類時候調用。
comlile sources

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容