宏定义 object-c 单例
今天发现单例用宏来声明 确实很实用,所以记录下来
#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 单例相关推荐
- Xcode pch文件配置及object c 单例创建
#####pch文件简介(摘抄自survivors的博客) 首先 pch 文件(即:Prefix Header)是一种预编译文件,在 Xcode 6 之前创建新的工程则会自动将该文件一起创建出来,但在 ...
- c语言井号字符什么意思,关于c语言宏定义中的单#(井号)和双#(井号)
看了这篇文章后了解了,但是文章中的例子比较特别,我在这里加个注释好了. 单井号就是将后面的 宏参数 进行字符串操作,就是将后面的参数用双引号引起来 双井号就是用于连接. 比如文章中的例子: #defi ...
- java线程安全定义了什么单例_Java中四种线程安全的单例模式实现方式
第一种:饿汉模式(线程安全) public class Single2 { private static Single2 instance = new Single2(); private Singl ...
- 初探Java设计模式1:创建型模式(工厂,单例等)
Java 设计模式 一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混.自认为本文还是写得不错的,花了不少心思来写这文章和做图,力求让读者真的能看着简 ...
- scala什么是单例对象_Scala单例和伴侣对象
scala什么是单例对象 Scala中的单例对象 (Singleton objects in Scala) Scala being an object-oriented programming lan ...
- Spring3.1.0实现原理分析(七).填充Bean属性,初始化Bean,登记善后处理,注册单例Bean...
大家好,上篇博客我较详细分析了实例化过程,今天继续探讨实例化之后的其它步骤,分别是"填充Bean属性","初始化Bean","登记善后处理" ...
- 设计模式C++描述----01.单例(Singleton)模式
一.概念 单例模式:其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享. class CSingleton { //公有的静态方法,来获取该实例 public: s ...
- static应用知识:单例设计模式
1.什么是设计模式(Design pattern) 开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式. 设计模式有20多种, ...
- Java枚举and单例
枚举 什么是枚举? 所谓的枚举,就是把某个类所有的对象一一罗列出来. 枚举类:这个类的对象是有限的. 定义枚举的语法格式 public enum 枚举类类名{值1, 值2, 值3, 值4; } 示例 ...
- 单例模式(单例设计模式)详解
在有些系统中,为了节省内存资源.保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式. 单例模式的定义与特点 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自 ...
最新文章
- C语言复习篇之数组与指针
- 你不知道的Node.js性能优化,读了之后水平直线上升
- Go编程技巧--io.Reader/Writer
- 浅入浅出 Android 安全 翻译完成!
- python输出偶数_Python习题册028:输出列表中的偶数
- MMO游戏技能攻击区域的计算2--给地图划分格子
- 开放API接口 笑话、天气、新闻 1
- 11矩阵的QR分解(1)
- 国内外手机号码正则表达式
- java 项目启动后页面乱码_idea java项目启动后访问html页面乱码
- 林子雨-2.3 面向对象编程基础
- 【论文写作】使用overleaf撰写你的会议论文
- 马克思《数学手稿》是“民科”作品吗?
- Eclipse项目中显示隐藏的文件
- 科研突破:非宁静无以致远
- 二维图画法入门_手绘的基础(入门)
- 自相关与互相关在matlab中实现
- 莪的拽、像省田各号①样没尽頭队——软件需求规格说明书
- python的iloc与loc函数
- jtag和swd区别,该用哪个?
热门文章
- ffmpeg结构体SpecifierOpt说明文档
- 通过程序实现文件下载更名,动态文件下载
- MySQL 的 Web 界面、前端或 GUI 工具
- java 蓝桥杯算法提高 字符串匹配(题解)
- java管理分类编写_java029学生管理系统的编写
- python吃显卡还是内存条_玩天际线吃U还是吃显卡或者还是吃内存?--天际线配置需求个人见解...
- Intel Pin架构
- ISE14.7逻辑综合与实现工作过程
- 电脑重启bootmgr_解决电脑开机出现bootmgr is compressed的两大妙招
- 初识OpenFlow协议