單例用途
資源共享(多個(gè)類都會(huì)用到這塊資源)而且和APP的生命周期等長(zhǎng)。
單例代碼
#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)建都保證是同一個(gè)單例取胎。
alloc和init區(qū)別
alloc分配內(nèi)存空間
init初始化數(shù)據(jù)
兩者區(qū)別就像你造了一張A4紙(alloc)挠进,然后在紙上素描(init)
load和initialize區(qū)別
load文件被加載時(shí)就會(huì)調(diào)用边锁,與complile sources中文件的位置有關(guān)系矾麻。
initialize第一次調(diào)用該類時(shí)候調(diào)用纱耻。
comlile sources