单例那点事
2017-11-09 本文已影响0人
淘代码者
单例用途
资源共享(多个类都会用到这块资源)而且和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