cocos2d使用半单例


cocos2d: 使用半单例

把MultiLayerScene设置成半单例,目的是让别的对象可以直接访问MultiLayerScene

  1. static MultiLayerScene* multiLayerSceneInstance;  
  2.   
  3. +(MultiLayerScene*) sharedLayer  
  4. {  
  5.     NSAssert(multiLayerSceneInstance != nil, @"MultiLayerScene not available!");  
  6.     return multiLayerSceneInstance;  
  7. }  
  8.   
  9. //初始化MultiLayerScene  
  10. -(id) init  
  11. {  
  12.     if ((self = [super init]))  
  13.     {  
  14.         multiLayerSceneInstance = self;  
  15.         // GameLayer层  
  16.         GameLayer* gameLayer = [GameLayer node];  
  17.         [self addChild:gameLayer z:1 tag:LayerTagGameLayer];  
  18.   
  19.     }  
  20.     return self;  
  21. }  
  22.   
  23. -(void) action1  
  24. {  
  25.     // do something  
  26. }  
  27.   
  28. -(void) dealloc  
  29. {  
  30.     multiLayerSceneInstance = nil;  
  31.   
  32.     // don't forget to call "super dealloc"  
  33.     [super dealloc];  
  34. }  
访问半单例方法,如在GameLayer层中可以这样访问MultiLayerScene中的action1方法:
  1. [[MultiSceneLayer shareLayer] action1];  

半单例与普通的单例类不同,任何时候只存在一个MultiLayerScene的实例,它不能被用来初始化MultiLayerScene。

相关内容