******HMSingleton-ARC.h

// .h文件
#define HMSingletonH(name) + (instancetype)shared##name;// .m文件
#define HMSingletonM(name) \
static id _instance; \\
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instance = [super allocWithZone:zone]; \}); \return _instance; \
} \\
+ (instancetype)shared##name \
{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instance = [[self alloc] init]; \}); \return _instance; \
} \\
- (id)copyWithZone:(NSZone *)zone \
{ \return _instance; \
} 

****.m的文件中

@implementation HMMovieTool
HMSingletonM(MovieTool)
@end

转载于:https://www.cnblogs.com/ios-g/p/4795136.html

IOS第二天多线程-04简化单例模式相关推荐

  1. iOS学习笔记-105.多线程04——CGD基础

    多线程04CGD基础 一CGD简介 1 什么是GCD 2 GCD的优势 二任务和队列 1 GCD中有2个核心概念 2 GCD的使用就2个步骤 三执行任务 1 执行任务的方法 2 同步和异步的区别 3 ...

  2. IOS开发之多线程 -- GCD的方方面面

    前言:这篇GCD的博文是本人阅读了很多海内外大神的关于GCD的文章,以及结合之前自己对GCD的粗浅的认识,然后取其精华,去其槽粕,综合起来的笔记,而且是尽可能的以通熟易懂的并且是正确的理论论述方式呈现 ...

  3. iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

    简介 在软件开发中,多线程编程技术被广泛应用,相信多线程任务对我们来说已经不再陌生了.有了多线程技术,我们可以同做多个事情,而不是一个一个任务地进行.比如:前端和后台作交互.大任务(需要耗费一定的时间 ...

  4. 多线程下的单例模式实现

    多线程下的单例模式实现 一,单线程下的单实例 1, 懒汉模式 2, 饿汉模式 二,多线程下的单实例 1,加锁 2,原子操作 单实例设计模式是我们平常接触最多的一种设计模式,它的特点在于保证一个类只有一 ...

  5. 多线程下的单例模式详解

    1. 单例模式 (1) 单例模式简介 (2) 实现方式 ① 饿汉式 ② 懒汉式 2. 多线程下的单例模式 (1) Synchronized (2) 双重检查锁 (3) 双重检查锁+Volatile 补 ...

  6. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  7. iOS开发-多线程开发之线程安全篇

    前言:一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象.同一个变量.同一个文件和同一个方法等.因此当多个线程访问同一块资源时,很容易会发生数据错误及数据不安 ...

  8. java 多线程的单例模式,Java多线程中的单例模式两种实现方式

    Java多线程中的单例模式 一.在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public class Singletion { priv ...

  9. python爬虫第二弹-多线程爬取网站歌曲

    python爬虫第二弹-多线程爬取网站歌曲 一.简介 二.使用的环境 三.网页解析 1.获取网页的最大页数 2.获取每一页的url形式 3.获取每首歌曲的相关信息 4.获取下载的链接 四.代码实现 一 ...

最新文章

  1. 7-flutter Navigator 和Route
  2. charles和Fiddler感觉哪个更好用
  3. 强制浏览器使用兼容模式,Web.config,httpProtocol
  4. ASP.NET Core MVC 源码学习:MVC 启动流程详解
  5. 前端学习(547):node的系统模块fs
  6. EF CodeFirst 学习 1 - 用fluent API设置元数据,
  7. 在Unity3D中实现安卓平台的本地通知推送
  8. 正则表达式及grep
  9. 输入n求N*N矩阵,规定矩阵沿45度线递增
  10. kali linux工具pyrit,在Kali Linux上安装cuda、pyrit-cuda以及optimus
  11. Java 简单爬虫 代码
  12. 阿里云邮件推送使用方法
  13. java每日一练(19_03_18)
  14. java 调用百度语音
  15. 关于JS获取clientWidth大小一直为0的问题
  16. 防止恶意调用API接口
  17. GPS坐标偏移与转换
  18. 树莓派初次配置C++环境以及进行简单的hcsr04驱动
  19. R: 更改行名及矩阵数据提取的易错点——下标出界
  20. B-树叶子个数和关键字个数间关系推导

热门文章

  1. 专访《王者荣耀》美术总监:用6年研究东方美学
  2. 大牛唐健,带你领略游戏服务器与后台架构的奥妙
  3. 《王者荣耀》游戏技术总监:技术架构与同步方案上做出改变?
  4. Unite 2018 | 浅谈伽玛和线性颜色空间
  5. idea配置tomcat必坑指南
  6. PHP生成验证码图片
  7. 2015 提高组 跳石头--二分答案
  8. Python攻克之路-网络编程(文件上传实现思路)
  9. 2018.1.21 数论笔记
  10. SQL之rand,round,floor,ceiling,cast小数处理函数