objective-c系列-单例

news/2024/7/2 11:10:41

// 地球只有一个,所以声明一个地球对象就可以了,千万不能声明两个啊!同理,有时候一个类也有只能有一个对象的情况,例如服务器,只想存到一个里 // 面,这样子,下次才可以取出上次存的数据。

 //用全局变量来实现单例模式

//在此定义一个全局变量 地球,然后在单例方法中一直返回这个全局变量,那也可以实现单例模式

Earth * global=nil;

 

//在单例方法中一直返回这个全局变量,但第一次调用时要创建这个对象

+(Earth *)defaultEarth

{

    if (global==nil) {

        global = [[ Earth alloc]init];

    }

    return global;

}

****************************************

//用静态局部变量实现单例模式

 

+(Earth *)defaultEarth

{

    static Earth* obj=nil;

 

    if (obj==nil) {

        obj=[[Earth alloc]init];

    }

    return obj;

}

**************************************

用GCD实现单例,超简单

// 1,线程安全;2,满足静态分析器的要求;3,兼容ARC

- (Earth *)shareEarth

{

    static Earth *sharedEarthInstance = nil;

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        sharedEarthInstance = [[self alloc] init];

    });

    

    return sharedEarthInstance;

}

// 

转载于:https://www.cnblogs.com/hyuganatsu/p/Singleton.html


http://lihuaxi.xjx100.cn/news/245780.html

相关文章

2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结

- 2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结 - 教材学习内容总结 程序员可见的状态:Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分,这称为程序员可见状态。包括:程序寄存器、条件码、程序状态、程序计数器和…

request.getparameter特殊字符变成?号问号_15 个不可不知的 Linux 特殊字符,你懂几个?...

不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有用处呢,今天的文章就给大家简单地科普一下 Linux 中你需要了解的 15 个特殊字符,想学或刚学 Linux 的小伙伴赶紧…

Libgdx学习笔记:Simple text input

2019独角兽企业重金招聘Python工程师标准>>> 官方Wiki:https://github.com/libgdx/libgdx/wiki/Simple-text-input 实现接口TextInputListener public class MyTextInputListener implements TextInputListener { Overridepublic void input (String …

javascript与java的不同之处

javascript与java的不同之处 虽然很像,但不是一种语言。 二者的区别体现在: 首先,它们是两个公司开发的不同的两个产品,Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发, 而JavaScri…

学术青年如何克服拖延症——5条技巧助你前进

雷锋网 AI 科技评论按:「我准备好了就开始」(或者说「拖延症」),以及「即便动起手来也觉得举步维艰」大概是每个现代人都逃不过的日常感受,不管是学习、在企业中工作,还是从事学术研究。我们可能都看过许多…

php 能打印一个没有实例化的类_你理解 PHP 中的静态方法吗?

它仍然是一个有争议的话题。让我们尝试了解原因。函数中的静态变量您可能已经看过以下代码:function testStatic() {static $x 0;$x;return $x; }在这里,我们每次调用 testStatic() 时,关键字 static 允许递增 $x:testStatic(); …

mysql之修改表引擎

版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/49817841 刚入门mysql的时候,对innodb引擎和myisam引擎没有很好的理解,所以表引擎用的基本上就是myisam,反正也不懂哪一个好…

Unix_Linux系统定时器的应用(案例)

2014-05-05 Created By BaoXinjian 一、摘要 关于任务定时的命令crontab,在Linux中应用还算常见,这次为了配合开发完成一些辅助功能,以及一些备份更新等脚本,就需要crontab来完成,在windows下也就是一个批处理&#xf…