title: singleton in objective c
body: <p>I saw a singleton example on objective-c book. However, I don't know if there is difference of meaning of 'singleton' definition between objective-c and other langs. Can this [[SingletonClass alloc] init] still be used to create a new object? If yes, how to guarantee there is only one object in the memory?</p>
  
  <pre><code>#import "SingletonClass.h"
  
  @implementation SingletonClass
  
  static SingletonClass *sharedInstance = nil;
  
  // Get the shared instance and create it if necessary.
  + (SingletonClass*)sharedInstance {
      if (sharedInstance == nil) {
          sharedInstance = [[super allocWithZone:NULL] init];
      }
  
      return sharedInstance;
  }
  
  // We can still have a regular init method, that will get called the first time the             Singleton is used.
  - (id)init
  {
      self = [super init];
  
      if (self) {
          // Work your initialising magic here as you normally would
      }
  
      return self;
  }
  </code></pre>