文档章节

IOS中的单例模式

哥特复心
 哥特复心
发布于 2014/07/29 00:01
字数 419
阅读 464
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

单例模式在所有的面向对象的语言中都有哦涉及到,相信做为一个程序员的你,绝对不会陌生! 单例是指静态分配的实例,就是只开辟一块内存,不会重新开辟内存,这样就节省了内存! 单列模式的好处在这里不多讲了,这里主要介绍单列模式的完整实现:

在objective-c中要实现一个单例类,至少需要做以下四个步骤:   1、为单例对象实现一个静态实例,并初始化,然后设置成nil,   2、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,   3、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,   4、适当实现allocWitheZone,copyWithZone,release和autorelease。


下面以SurveyRunTimeData为例子:

<!-- lang: cpp -->

static SurveyRunTimeData *sharedObj = nil; //第一步:静态实例,并初始化。 @implementation SurveyRunTimeData

  • (SurveyRunTimeData*) sharedInstance //第二步:实例构造检查静态实例是否为nil { @synchronized (self) { if (sharedObj == nil) { [[self alloc] init]; } } return sharedObj; }

  • (id) allocWithZone:(NSZone *)zone //第三步:重写allocWithZone方法 { @synchronized (self) { if (sharedObj == nil) { sharedObj = [super allocWithZone:zone]; return sharedObj; } } return nil; }

  • (id) copyWithZone:(NSZone *)zone //第四步 { return self; }

  • (id) retain { return self; }

  • (unsigned) retainCount { return UINT_MAX; }

  • (oneway void) release {

}

  • (id) autorelease { return self; }

  • (id)init { @synchronized(self) { [super init];//往往放一些要初始化的变量. return self; } }

@end

© 著作权归作者所有

上一篇: FMDB详解
下一篇: Nsstring常用分类
哥特复心
粉丝 109
博文 68
码字总数 40593
作品 0
长沙
高级程序员
私信 提问
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
2018/05/26
0
0
移动开发之设计模式- 代理模式(IOS&Android)

资源 完全参照 代理模式|菜鸟教程但不包括IOS代码 代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有...

FlanneryZJ
2018/12/18
0
0
移动开发之设计模式-工厂模式(IOS&Android)

资源 完全参照 工厂模式|菜鸟教程 ,但不包括IOS代码 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳...

FlanneryZJ
2018/12/17
0
0
移动开发之设计模式- 命令模式(IOS&Android)

资源 完全参照 命令模式|菜鸟教程但不包括IOS代码 命令模式 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用...

FlanneryZJ
2018/12/19
0
0
移动开发之设计模式-抽象工厂模式(IOS&Android)

资源 完全参照 抽象工厂模式|菜鸟教程 ,但不包括IOS代码 抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型...

FlanneryZJ
2018/12/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mars-config 动态配置管理

mars-config 码云地址:https://gitee.com/fashionbrot/mars-config 介绍 spring mvc 、springboot 动态配置系统。http 轮训方式 更新 动态配置 软件架构 软件架构说明 后端使用技术 :sprin...

fashionbrot
14分钟前
7
0
女朋友玩吃鸡手游被开挂老哥骗炮,我见义勇为将骗子绳之以法

大家好,我是乔哥。 晚上10点以后下班后我回到自如出租房里面,开始处理公众号粉丝发来的消息,一条一条处理,突然看到了这么几条消息,吸引了我的眼球: 然后我就和这位女粉丝小红(化名)聊...

gzc426
19分钟前
2
0
两款软件

fadetop保护眼睛软件 Snipaste截图软件

伟大源于勇敢的开始
46分钟前
6
0
06.全局锁和表锁

根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是flush tables with read lock(FTW...

scgaopan
今天
7
0
图解安装CentOS8

最近正式发布了CentOS8!迫不及待地准备下载了CentOS8镜像,准备体验下,工作繁忙无暇理会。 今天抽空安装体验下~ 可从CentOS官网下载:https://centos.org/download/ 为了快速可以选择从国...

技术训练营
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部