首页 > 移动平台 > 详细

IOS - 单例模式+多线程

时间:2015-04-22 13:13:19      阅读:124      评论:0      收藏:0      [点我收藏+]

比如车票类Ticket,保证票只创建了一次。

1.定义静态全局变量 static Ticket *SharedInstance;

 定义一个票数的变量 @property(assign,atomic)NSInteger tickets;

atomic 原子属性,在多线程中一个线程访问了其他线程不能访问了。

另外加同步锁@synchronized

2.新建一个车票类,重写allocWithZone方法

+(id)allocWithZone:(NSZone *)zone

{

  //多线程

  static dispath_once_t onceToken;

  dispath_once(&onceToken,^{

    SharedInstance = [super allocWithZone:zone];

  });

  //单线程

  //if(SharedInstance == nil)

  //{

  //  SharedInstance = [super allocWithZone:zone];

  //}

  return SharedInstance;

}

3.便于调用

+(Ticket*)sharedTicket

{

  static dispatch_once_t onceToken;

  dispatch_one(&onceToken,^{

    SharedInstance = [[Ticket alloc]init];

  });

  return ticket;

}

 

IOS - 单例模式+多线程

原文:http://www.cnblogs.com/zhouwenbo/p/4446795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!