單例用途
資源共享(多個類都會用到這塊資源)而且和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