Singleton

Objective-C 的版本

#pragma mark - SingleTon

+ (id)sharedManager {
    static ClassName *sharedManagerForClassName;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedManagerForClassName = [[self alloc] init];
    });
    return sharedManagerForClassName;
}

- (id)init {
  if (self = [super init]) {
      // init something
  }
  return self;
}

- (void)dealloc {
  // Should never be called, but just here for clarity really.
}

Swift 的很多版本

http://krakendev.io/blog/the-right-way-to-write-a-singleton http://stackoverflow.com/questions/24024549/using-a-dispatch-once-singleton-model-in-swift/24147830#24147830

1. Class constant

class Singleton  {
   static let sharedInstance = Singleton()
}

2. Nested struct

class Singleton {
    class var sharedInstance: Singleton {
        struct Static {
            static let instance: Singleton = Singleton()
        }
        return Static.instance
    }
}

3. dispatch_once

class Singleton {
    class var sharedInstance: Singleton {
        struct Static {
            static var onceToken: dispatch_once_t = 0
            static var instance: Singleton? = nil
        }
        dispatch_once(&Static.onceToken) {
            Static.instance = Singleton()
        }
        return Static.instance!
    }
}

results matching ""

    No results matching ""