IOS-单例模式+多线程⽐如车票类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;java单例模式双重锁
  dispatch_one(&onceToken,^{
    SharedInstance = [[Ticket alloc]init];
  });
  return ticket;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。