单例

单例
个人觉得,单例用的比较多的是对工具类的封装,使用单例,可以很方面的进行模块间传值或者是工具类方法的使用。

一般形式

+(Singleton *)shareSingleton{
     static Singleton *singleton = nil;
     @synchronized(self) {   //线程锁
     if (singleton == nil) {
        singleton = [[Singleton alloc]init];
     }
  }
  return singleton;
}

GCD形式

//gcd中让某些代码只执行一次  (单例)

- (void)onceToken{
  static UIImage *image = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
  image = [[UIImage alloc] init];
  NSLog(@"我只出现一次 %@",[NSThread currentThread]);
});
}

PS:虽然单例模式,对象只会初始化一次,但是在应用活跃期间都不会被释放,所以单例要慎用,要不然会占用大量资源,引起不必要的问题。

你可能感兴趣的:(单例)