单例那点事

单例用途

资源共享(多个类都会用到这块资源)而且和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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容