比如车票类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;

}

转载于:https://www.cnblogs.com/zhouwenbo/p/4446795.html

IOS - 单例模式+多线程相关推荐

  1. iOS开发多线程篇—多线程简介

    iOS开发多线程篇-多线程简介 一.进程和线程 1.什么是进程 进程是指在系统中正在执行的一个应用程序 每一个进程之间是独立的.每一个进程均执行在其专用且受保护的内存空间内 比方同一时候打开QQ.Xc ...

  2. iOS开发多线程篇—自定义NSOperation

    iOS开发多线程篇-自定义NSOperation 一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UI ...

  3. iOS之多线程的使用和优缺点比较

    进程与线程的联系与区别 进程(process)是一块包含了某些资源的内存区域,操作系统利用进程把它的工作划分为一些功能单元.进程是操作系统的基础,是一次程序的执行:它是操作系统动态执行的基本单元,在传 ...

  4. ios多线程Android,iOS 关于多线程

    一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如:同时打开QQ,Xcode,系统就会分别启动2个进程 通过 ...

  5. iOS开发多线程篇—线程的状态

    iOS开发多线程篇-线程的状态 一.简单介绍 线程的创建: self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(te ...

  6. iOS:多线程技术GCD的使用

    GCD的使用: 1.队列的类型      1.1 主队列:mian queue,主线程队列,负责更行UI的操作.是一个串行的队列.      1.2 系统默认的并行队列:global queue,按优 ...

  7. [iOS]-单例模式\通知\代理

    目录: 参考的博客 单例模式 什么是单例模式 单例模式的优缺点 优点: 缺点: 实现方式 懒汉式: 举一个真实的懒汉式创建单例的例子: 饿汉式: 通知 通知底层实现原理 NSNotification ...

  8. android 线程信号量,iOS开发 多线程的高级应用-信号量semaphore

    在iOS开发的道路上,多线程的重要性不言而喻. 大部分我们都停留在基础的使用上面.缺乏高级应用. 缺乏提升,是因为我们面对他太少,复杂的事情重复做,复杂的事务基础化. 差距就是这样拉开了 言归正传: ...

  9. iOS开发多线程篇—线程安全

    一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数 ...

  10. iOS单例模式定义与使用

    单例模式是iOS开发中常用的一种设计模式,目的在于创建一次对象,多地方使用. 系统中的单例例如:UIApplication. NSUserDefaults 等,开发中我们可以用作用户管理. Objec ...

最新文章

  1. ExtJs与WCF交互:生成树
  2. CSS布局 ——从display,position, float属性谈起
  3. Puppeteer 学习笔记及基本用法
  4. java面试常见问题
  5. Android RotateAnimation详解
  6. 华为交换机vlan配置
  7. 附录:更多集合操作命令
  8. 红帽和Mirantis宣告结束OpenStack合作
  9. Logstash+Kibana+多ElasticSearch集群部署
  10. 豪掷197亿美元!微软收购Siri背后的语音技术研发公司
  11. idea 调试java技巧_Intellij IDEA Debug 调试技巧
  12. cf 165 div2 解题报告
  13. MyBatis(五)------MyBatis配置
  14. python2.0迅雷下载_【Tomato DualWan】迅雷离线下载完美教程
  15. Document类型、HTMLDocument类型和document对象的区别
  16. 交换机下接路由器lan还是wan_路由器LAN-WAN级联,增强无线信号,扩大覆盖范围...
  17. C语言实现求两个数的和
  18. 微信小程序下载图片与缓存
  19. 苏科大的四年里,我都学会了啥?
  20. SPSS中的命令语法如何实现快速删除变量

热门文章

  1. iOS开发之33 款主宰 2017 iOS 开发的开源库
  2. 第八章 虚拟机字节码执行引擎
  3. Homebrew简单使用
  4. Wormhole —— Docker 容器的服务连接代理
  5. SLF4J: The requested version 1.5.8 by your slf4j
  6. android 设备唯一码的获取,Cpu号,Mac地址
  7. Makefile中变量赋值方式
  8. 【eclipse】解决:eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题
  9. 这个 SpringCloud+Vue 在线教育系统,牛得起飞!
  10. 电商促销后台设计,写得太好了!