您的位置:首页 > 其它

单例设计

2014-01-13 16:10 309 查看
单例:单例确保一个类只有一个实例,而且自行实例化,并向整个类提供这个实例。

@implementation  Ants

static Ants 
*shareAt=nil;//声明静态变量,作用域是在整个程序周期

+(Ants*)shareAnts//单例方法

{

   
@synchronized(self){//使用线程保护

   if
(shareAt==nil) {//判断是否实例化成功

     
 shareAt=[[self
alloc]init];

    }

     
 return
shareAt;//返回已创建或存在的变量

    }

}

PS:官方建议写法

static MyGizmoClass *sharedGizmoManager = nil;

  + (MyGizmoClass*)sharedManager

  {

  @synchronized(self) {

  if (sharedGizmoManager == nil) {

  [[self alloc] init]; // assignment not done here

  }

  }

  return sharedGizmoManager;

  }

 
  +
(id)allocWithZone:(NSZone *)zone

  {

  @synchronized(self) {
  if
(sharedGizmoManager == nil) {

  sharedGizmoManager = [super allocWithZone:zone];

  return sharedGizmoManager; // assignment and return on first
allocation

  }

  }

  return nil; //on subsequent allocation attempts return nil

  }
  -
(id)copyWithZone:(NSZone *)zone

  {

  return self;

  }
  -
(id)retain

  {

  return self;

  }
  -
(unsigned)retainCount

  {

  return UINT_MAX; //denotes an object that cannot be released

  }
  -
(void)release

  {
  //do
nothing

  }
  -
(id)autorelease

  {

  return self;

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: