几种单例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/48009105

单例

单例:Singleton pattern。就是只有一个实例,不管实例化多少个对象,对象都是唯一的(可以通过打印其地址证明)。

下面就是一些单例的代码,不是很全,后面接触到新的还会继续补充。

1.普通创建单例的方法:

利用类方法创建单例,首先是类方法的声明(就是普通类方法的声明,不必多说)。

代码:

#import<Foundation/Foundation.h>

@interface StudentManager :NSObject

+(StudentManager *)shareInstance;

@end                                                               

重点是单例的创建,也就是这个类方法的实现。

代码:

#import"StudentManager.h"

staticStudentManager * student;

@implementation StudentManager

+(StudentManager *)shareInstance

{

if (student ==nil) {

student = [[StudentManageralloc] init];

    }

returnstudent;

}

@end

这样单例就创建好了,当我们用这个类方法来创建对象的时候,哪怕是创建再多的对象得到的对象都是唯一的,也就是单例。至于为什么要用单例呢,大家可以上网区查查,有比较全面、详细的解释。一般当系统中希望某个类的对象只有一个的时候,我们一般都会用到单例。

2.利用dispatch创建单例:

也是利用了一个类方法,声明和前面的是一样的,就不在赘述了。

实现代码:

#import"StudentManager.h"

@implementation StudentManager

+(StudentManager *)shareInstance

{

staticStudentManager * studentManager;

staticdispatch_once_t oneToken;

dispatch_once(&oneToken, ^{

studentManager = [[StudentManageralloc] init];

});

return studentManager;

}

@end

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 标签栏代码

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • iOS中防止数组越界之后发生崩溃

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • iOS开发中OC与JS交互(UIWebView)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • Android蓝牙详析 | 经典蓝牙通讯架构

    AcceptThread函数接收的是一个布尔值secure;

    凌川江雪
  • SDN在5G网络中扮演重要角色

    在很多方面,4G网络已经逐渐落后。新的数据交互模式和越来越多的连接设备是迫使运营商寻求无线数据通信下一步演进的两大动力。首个5G网络预计将在2020年出现。 ?...

    SDNLAB
  • IntelRealSense摄像头安装拍照教程

    打开Intel RealSense Viewer程序,将RGB Camera 状态从off调为on。

    华创信息技术
  • Python基本常用包整理(data analysis and machine learning),附查询包版本语句

    python 数据分析模块(Numpy、Scipy、Scikit和Pandas等) python进行机器学习(tensorflow) 一、基础包 ①Numpy...

    学到老
  • shell脚本后台运行

    1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh...

    一灰灰blog
  • AWS Parameter Store经验总结

    Parameter Store用来存储配置的信息还是蛮方便的,记录一下这方面的经验。

    贺思聪
  • TensorBoard可视化

    在我们的炼丹过程中,如果能够使用丰富的图像来展示模型的结构,指标的变化,参数的分布,输入的形态等信息,无疑会提升我们对问题的洞察力,并增加许多炼丹的乐趣。

    lyhue1991

扫码关注云+社区

领取腾讯云代金券