今天发现单例用宏来声明 确实很实用,所以记录下来

#define GTMOBJECT_SINGLETON_BOILERPLATE(_object_name_, _shared_obj_name_)

static _object_name_ *z##_shared_obj_name_ = nil;

+ (_object_name_ *)_shared_obj_name_ {

@synchronized(self) {

if (z##_shared_obj_name_ == nil) {

/* Note that ‘self’ may not be the same as _object_name_ */

/* first assignment done in allocWithZone but we must reassign in case init fails */

z##_shared_obj_name_ = [[self alloc] init];

_GTMDevAssert((z##_shared_obj_name_ != nil), @”didn’t catch singleton allocation”);

}

}

return z##_shared_obj_name_;

}

+ (id)allocWithZone:(NSZone *)zone {

@synchronized(self) {

if (z##_shared_obj_name_ == nil) {

z##_shared_obj_name_ = [super allocWithZone:zone];

return z##_shared_obj_name_;

}

}

/* We can’t return the shared instance, because it’s been init’d */

_GTMDevAssert(NO, @”use the singleton API, not alloc+init”);

return nil;

}

- (id)retain {

return self;

}

- (NSUInteger)retainCount {

return NSUIntegerMax;

}

- (void)release {

}

- (id)autorelease {

return self;

}

- (id)copyWithZone:(NSZone *)zone {

return self;

}

转载于:https://www.cnblogs.com/zsw-1993/archive/2012/10/19/4880761.html

宏定义 object-c 单例相关推荐

  1. Xcode pch文件配置及object c 单例创建

    #####pch文件简介(摘抄自survivors的博客) 首先 pch 文件(即:Prefix Header)是一种预编译文件,在 Xcode 6 之前创建新的工程则会自动将该文件一起创建出来,但在 ...

  2. c语言井号字符什么意思,关于c语言宏定义中的单#(井号)和双#(井号)

    看了这篇文章后了解了,但是文章中的例子比较特别,我在这里加个注释好了. 单井号就是将后面的 宏参数 进行字符串操作,就是将后面的参数用双引号引起来 双井号就是用于连接. 比如文章中的例子: #defi ...

  3. java线程安全定义了什么单例_Java中四种线程安全的单例模式实现方式

    第一种:饿汉模式(线程安全) public class Single2 { private static Single2 instance = new Single2(); private Singl ...

  4. 初探Java设计模式1:创建型模式(工厂,单例等)

    Java 设计模式 一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混.自认为本文还是写得不错的,花了不少心思来写这文章和做图,力求让读者真的能看着简 ...

  5. scala什么是单例对象_Scala单例和伴侣对象

    scala什么是单例对象 Scala中的单例对象 (Singleton objects in Scala) Scala being an object-oriented programming lan ...

  6. Spring3.1.0实现原理分析(七).填充Bean属性,初始化Bean,登记善后处理,注册单例Bean...

    大家好,上篇博客我较详细分析了实例化过程,今天继续探讨实例化之后的其它步骤,分别是"填充Bean属性","初始化Bean","登记善后处理" ...

  7. 设计模式C++描述----01.单例(Singleton)模式

    一.概念 单例模式:其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享. class CSingleton { //公有的静态方法,来获取该实例 public: s ...

  8. static应用知识:单例设计模式

    1.什么是设计模式(Design pattern) 开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式. 设计模式有20多种, ...

  9. Java枚举and单例

    枚举 什么是枚举? 所谓的枚举,就是把某个类所有的对象一一罗列出来. 枚举类:这个类的对象是有限的. 定义枚举的语法格式 public enum 枚举类类名{值1, 值2, 值3, 值4; } 示例 ...

  10. 单例模式(单例设计模式)详解

    在有些系统中,为了节省内存资源.保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式. 单例模式的定义与特点 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自 ...

最新文章

  1. C语言复习篇之数组与指针
  2. 你不知道的Node.js性能优化,读了之后水平直线上升
  3. Go编程技巧--io.Reader/Writer
  4. 浅入浅出 Android 安全 翻译完成!
  5. python输出偶数_Python习题册028:输出列表中的偶数
  6. MMO游戏技能攻击区域的计算2--给地图划分格子
  7. 开放API接口 笑话、天气、新闻 1
  8. 11矩阵的QR分解(1)
  9. 国内外手机号码正则表达式
  10. java 项目启动后页面乱码_idea java项目启动后访问html页面乱码
  11. 林子雨-2.3 面向对象编程基础
  12. 【论文写作】使用overleaf撰写你的会议论文
  13. 马克思《数学手稿》是“民科”作品吗?
  14. Eclipse项目中显示隐藏的文件
  15. 科研突破:非宁静无以致远
  16. 二维图画法入门_手绘的基础(入门)
  17. 自相关与互相关在matlab中实现
  18. 莪的拽、像省田各号①样没尽頭队——软件需求规格说明书
  19. python的iloc与loc函数
  20. jtag和swd区别,该用哪个?

热门文章

  1. ffmpeg结构体SpecifierOpt说明文档
  2. 通过程序实现文件下载更名,动态文件下载
  3. MySQL 的 Web 界面、前端或 GUI 工具
  4. java 蓝桥杯算法提高 字符串匹配(题解)
  5. java管理分类编写_java029学生管理系统的编写
  6. python吃显卡还是内存条_玩天际线吃U还是吃显卡或者还是吃内存?--天际线配置需求个人见解...
  7. Intel Pin架构
  8. ISE14.7逻辑综合与实现工作过程
  9. 电脑重启bootmgr_解决电脑开机出现bootmgr is compressed的两大妙招
  10. 初识OpenFlow协议