ios面试important

iOS 三种单例创建方式的优缺点

2018-06-07  本文已影响2516人  奇怪的她的他

一、单线程模式单例

// 单线程单例
+(instancetype)sharedLoadData
{
  static Singleton *singleton;
  if (!singleton ) {
    singleton = [[Singleton alloc] init];
  }
  return singleton;
}

二、多线程加锁单例

// @synchronized加锁
+(instancetype)sharedLoadData
{
    static Singleton *singleton;
    @synchronized (self) {
    if (!singleton) {
        singleton = [[Singleton alloc] init];
      }
    }
    return singleton;
}

三、系统GCD创建单例

+(instancetype)sharedLoadData
{
    static Singleton *singleton = nil;
    static dispatch_once_t onceToken;
    // dispatch_once  无论使用多线程还是单线程,都只执行一次
    dispatch_once(&onceToken, ^{
        singleton = [[Singleton alloc] init];
    });
    return singleton;
}
上一篇下一篇

猜你喜欢

热点阅读