美文网首页
单例的init死循环

单例的init死循环

作者: Gunks | 来源:发表于2020-03-29 22:19 被阅读0次

https://my.oschina.net/nerozhao/blog/466731

第一种,在init里面抛出异常,定义私有的init

- (instancetype)init {
    [self doesNotRecognizeSelector:_cmd];
    return nil;
}

- (instancetype)initPrivate {
    self = [super init];
    if (self) {
    }
    return self;
}

+ (instancetype)sharedInstance {
    static MySingleton *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] initPrivate];
    });
    return sharedInstance;
}

第二种,在init里面直接返回单例

- (instancetype)init {
    return [[self class] sharedInstance];
}

- (instancetype)initPrivate {
    self = [super init];
    if (self) {
    }
    return self;
}

+ (instancetype)sharedInstance {
    static MySingleton2 *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] initPrivate];
    });
    return sharedInstance;
}

个人比较倾向于第二种

相关文章

  • 单例的init死循环

    https://my.oschina.net/nerozhao/blog/466731 第一种,在init里面抛出...

  • Swift 最简单的单例模式的实现

    为了防止调用单例时调用init方法,将init私有化即可,如下:

  • 单例模式、异常、模块

    单例模式 创建单例-保证只有1个对象 创建单例时,只执行1次init方法 目的 —— 让 类 创建的对象,在系统中...

  • MJExtension的使用注意

    单例的类调用json转模型方法时,MJExtension底层会调用单例的类的alloc init方法,然后在属性...

  • 设计模式-单例模式的实现

    前言 不推荐直接使用:XXXClass *obj = [XXXClass [alloc] init];方式获取单例...

  • Python重要知识点总结

    __new__.__init__区别,如何实现单例模式,有什么优点__new__是一个静态方法,__init__是...

  • 控制器管理

    UIApplication UIApplication是单例,不能手动创建,不能alloc init,用[UIAp...

  • 单例那点事

    单例用途 资源共享(多个类都会用到这块资源)而且和APP的生命周期等长。 单例代码 alloc和init区别 lo...

  • swift 单例比较好的写法

    final将这个单例类终止继承。 private设置初始化方法为私有,避免外部对象通过访问init方法创建单例类的实例。

  • 创建单例之经验

    今天同事创建了一个单例,但是一调用那个单例就走不到下一行。 追查了半天,发现是在单例里重写了Init方法,然而在i...

网友评论

      本文标题:单例的init死循环

      本文链接:https://www.haomeiwen.com/subject/beepuhtx.html