// .h文件
#define WLSingletonH(name) + (instancetype)shared##name;// .m文件
#if __has_feature(objc_arc)#define WLSingletonM(name) \static id _instace; \\+ (id)allocWithZone:(struct _NSZone *)zone \{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [super allocWithZone:zone]; \}); \return _instace; \} \\+ (instancetype)shared##name \{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [[self alloc] init]; \}); \return _instace; \} \\- (id)copyWithZone:(NSZone *)zone \{ \return _instace; \}#else#define WLSingletonM(name) \static id _instace; \\+ (id)allocWithZone:(struct _NSZone *)zone \{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [super allocWithZone:zone]; \}); \return _instace; \} \\+ (instancetype)shared##name \{ \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instace = [[self alloc] init]; \}); \return _instace; \} \\- (id)copyWithZone:(NSZone *)zone \{ \return _instace; \} \\- (oneway void)release { } \- (id)retain { return self; } \- (NSUInteger)retainCount { return 1;} \- (id)autorelease { return self;}#endif

##可以直接连接宏中的参数

如果一条宏太长,以至于一行放不下,就需要在每行的结尾加一个‘\’,表示下一行属于这条宏,和一行中放不下一条

字符串一样

要在arc和mrc模式下都能使用,就需要用预处理宏判断一下

#if __has_feature(objc_arc)

这里放置arc模式下的单例宏

#else

这里放置非arc模式下的单例宏

转载于:https://www.cnblogs.com/forflame/p/4558419.html

oc快速生成单例头文件解析相关推荐

  1. Vs code如何快速生成Verilog例化模板

    问题描述 用过很多种编辑器,Vs code对与Verilog的语法支持,以及Vivado关联都是目前我最满意的. 也是我用过安装插件最方便的一款软件,最关键的是它不需要破解,直接在官网下载正版,安装即 ...

  2. NSObject头文件解析 / 消息机制 / Runtime解读 (一)

    NSObject头文件解析 当我们需要自定义类都会创建一个NSObject子类, 比如: #import <Foundation/Foundation.h>@interface Class ...

  3. 视频头文件解析--ts

    视频头文件解析--ts 分类: 视频编解码 2013-01-16 12:34 347人阅读 评论(0) 收藏 举报 TS ts 视频封装 数据结构: typedef struct pmt_es_com ...

  4. 怎么使用 javah 工具生成 C 语言头文件

    使用 javah 工具生成 C 语言头文件的方法如下: 确保你的 Java 环境已经安装完毕,并且已经将 JDK 的 bin 目录加入了系统的 PATH 环境变量中. 打开命令提示符或终端窗口,进入到 ...

  5. Linux下利用protoc命令生成protobuf的头文件和源文件,根据mesType.proto文件

    Linux下利用protoc命令生成protobuf的头文件和源文件,根据mesType.proto文件 protobuf的message文件为 msgType.proto 生成c++头文件和源文件的 ...

  6. time.h头文件解析

    本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时.时间的获取.时间的计算和显示格式等方面进行了阐述.本文还通过大量的实例向你展示了time.h头文件中声明的 ...

  7. 第一次创建Qt程序,对里面源代码头文件解析,常用快捷键,Qt助手

    Qt助手: 命名规范和常用快捷方式: 命名规范 类名 首字母大写,单词和单词之间首字母大写 函数名 变量名称 首字母小写,单词和单词之间首字母大写注释ctrl + / 运行 ctrl + r 编译 c ...

  8. 如何快速生成一个web.xml 文件

    新建一个webd动态项目,如果在创建的时候忘记勾选创建web.xml文件,那么生成的web项目是没有web.xml的,自己手写的话很麻烦,那么如何快速生成web.xml呢 1.在新建的web项目上右键 ...

  9. C语言中的stdlib头文件解析

    stdlib 头文件即standard library(标准库)头文件,里面包含了C.C++语言的最常用的系统函数.包括动态内存管理.随机数生成.与环境之间的通信.整数运算.搜索.排序及转换等. st ...

  10. VScode如何快速生成【.vue】文件骨架(配置vue.json)

    设置.vue 文件快速生成骨架: 1. 打开vscode,点击对话框左上角文件,依次点击:首选项 -> 配置用户代码片段:如下图 2. 输入框输入vue,选择vue.json:如下图 3.复制下 ...

最新文章

  1. [java进阶]3.slf4j作用及其实现原理
  2. ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★...
  3. php菜单管理样式模板,php – SilverStripe Fluent菜单模板
  4. CentOS6.6部署VNC服务端
  5. paip.不同目录结构哈的文件批量比较
  6. Label mx条码打印软件批量制作ITF-14条码
  7. H5 前端JS添加水印
  8. 2021-04-29 Mac有效阻止应用联网 - 免费的第三方软件
  9. 计算机网络技术基础竞赛题,网络技术基础知识竞赛试题
  10. grok java_Java Grok.match方法代码示例
  11. 乌镇饭局后,阿里腾讯走向了分岔路
  12. Spring5-Bean的自动装配
  13. Linux——boot lodaer:grub2核心载入工具
  14. 李开复:点子太多的聪明人不适合创业
  15. 在header中添加中文头信息
  16. 翟欣欣微博发声解释“真相”
  17. 华为主题锁屏壁纸换不掉_华为手机总是出现乱七八糟的照片?一招帮你找出源头,彻底删除!...
  18. 哪些类型内容的短视频涨粉最快
  19. Reprint:《用十年教会自己编程》、《喜鹊开发者》汉化版
  20. signature=7eaed5a66499b473aab2f11ec0461fe9,Author's reply: To PMID 25293698

热门文章

  1. 谷歌:光靠软件修复不能完全防御“幽灵”漏洞
  2. linux下的终端利器----tmux
  3. 【剑指offer】:Q44:直扑克
  4. Struts2基础总结
  5. WordPress 实用SEO插件总结
  6. Silverlight 数据绑定 (1):怎样实现数据绑定 Silverlight 数据绑定 (2):Source to Target...
  7. 跟我一起考PMP---项目的管理过程
  8. MATLAB文件操作及读txt文件(fopen,fseek,fread,fclose)
  9. [MSDN]Design Guidelines for Developing Class Libraries with .NET Framework 4
  10. 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(待续)