单例模式是我常用的一种设计模式,最常见的用途就是用来保存数据并且传递数据。这都归功于单例模式的特性,首先就让我为大家简单介绍一下单例模式的特性。

单例模式的三大特性:

1.某个类只能有一个实例;

2.它必须自行创建这个实例;

3.它必须自行向整个系统提供这个实例。

具体代码如下:

mySingleton.h

#import <Foundation/Foundation.h>

@interface mySingleton : NSObject

+(mySingleton*)sharedInstance;

@end

mySingleton.m

#import "mySingleton.h"

static mySingleton *myst=nil;

@implementation mySingleton

+(mySingleton*)sharedInstance{

if (myst==nil) {

static dispatch_once_t once;

dispatch_once(&once, ^{

myst=[[super allocWithZone:NULL]init];

});

}

return myst;

}

+(id)allocWithZone:(struct _NSZone *)zone{

return [mySingleton sharedInstance];

}

-(id) copy{

return [mySingleton sharedInstance] ;

}

@end

创建的这个mySingleton类中有一个用static修饰的myst全局实例,该实例就是单例

实现方法:

- (void)viewDidLoad {

[super viewDidLoad];

mySingleton *s1=[mySingleton sharedInstance];

mySingleton *s2=[[mySingleton alloc]init];

mySingleton *s3=[s1 copy];

NSLog(@"s1=%@",s1);

NSLog(@"s2=%@",s2);

NSLog(@"s3=%@",s3);

}

运行结果:

s1=<mySingleton: 0x7fbea8e05d70>

s2=<mySingleton: 0x7fbea8e05d70>

s3=<mySingleton: 0x7fbea8e05d70>

运行结果显示,3个不同方法产生的对象的地址是相同的。

 

转载于:https://www.cnblogs.com/daxionglovecoding/p/5306882.html

IOS之Objective-C学习 ARC下的单例模式相关推荐

  1. 为什么Apple建议使用dispatch_once在ARC下实现单例模式?

    本文翻译自:Why does Apple recommend to use dispatch_once for implementing the singleton pattern under ARC ...

  2. IOS学习 ARC下__bridge

    总结于 IOS Tuturial 中 ARC两章,详细在dropbox pdf 文档. Toll-Free Bridging 当你在 Objective-C 和 Core Foundation 对象之 ...

  3. [iOS]ARC下循环引用的问题

    转载自:http://blog.cnbang.net/tech/2085/ [iOS]ARC下循环引用的问题 2013-8-30 最初 最近在开发应用时碰到使用ASIHttpRequest后在某些机器 ...

  4. ios 内存管理的理解(三)ARC下 对象内存管理

    1 ARC工作原理详述 ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或autorelease 2 ...

  5. Objective-C中,ARC下的 strong和weak指针原理解释

    Objective-C中,ARC下的 strong和weak指针原理解释 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是& ...

  6. IOS中触摸事件学习

    IOS中触摸事件学习 1. 事件的声明周期 2. 系统相应阶段 3. APP响应阶段 4. 触摸.事件.响应者 4.1 UITouch(触摸) 4.2 UIEvent(事件真身) 4.3 UIResp ...

  7. iOS开发通过微信学习WCDB(二)

      通过<iOS开发通过微信学习WCDB(一)>这篇博客,相信大家对WCDB已经有了一个简单的了解和认识.这篇文章主要是为了进一步深入的学习 ###数据库加密   上篇文章中提到了,自己在 ...

  8. ios 图像坐标系_iOS学习笔记(1)-iPhone分辨率和坐标系

    终于决定开始学习ios开发了,很久之前有过一次ios开发培训,但是做完作业就落下了,一直没有再捡起.想到如今ios开发如火如荼,再不学习真的要掉队了,希望能督促自己在2个月内完成ios开发的基础学习以 ...

  9. 秦州:西瓜书 + 南瓜书 吃瓜系列 14. 降维与度量学习(下)

    吃瓜教程--西瓜书+南瓜书 Datawhale南瓜书是经典机器学习教材<机器学习>(西瓜书)的公式推导解析指南,旨在让在学习西瓜书的过程中,再也没有难推的公式,学好机器学习. 内容属性:机 ...

最新文章

  1. App Store兼容性问题
  2. 正确使用stl vecotr erase函数
  3. 【Curl (libcurl) 开发 之一】Cocos2dx之libcurl(curl_easy)的编程教程(帮助手册)!...
  4. mysql部署jar_mysql+jar踩坑记录
  5. sklearn 安装_初识sklearn
  6. CEF编译遇到的问题记录
  7. 合格架构师的目标管理
  8. Java面向对象——基础2 封装、继承、多态
  9. java.net.NoRouteToHostException: No route to host解决方法
  10. 各种边缘检测算子特点比较(canny)
  11. python接口测试jason_Python接口测试框架实例
  12. mysql 驱动包 mysql-connect-java
  13. scrapy爬取快代理并保存mongo数据库
  14. Android ndk开发C调用C++
  15. 易管家服装进销存 v1.0 下载
  16. mkv文件用什么软件打开_什么是MKV文件,以及如何播放它们?
  17. R语言plotly可视化:plotly可视化回归模型实际值和回归预测值的散点图分析回归模型的预测效能、一个好的模型大部分的散点在对角线附近(predicted vs actual)
  18. 记录导出微信聊天记录到硬盘的过程
  19. Ninja工具介绍及基本语法
  20. 自然语言处理(二十八):BERT介绍

热门文章

  1. 在Linux下安装和使用MySQL(转)
  2. C语言学习4(数据的输入与输出)
  3. MoCo不适用于目标检测?MSRA提出对象级对比学习的目标检测预训练方法SoCo!性能SOTA!(NeurIPS 2021)...
  4. 手把手带你学习如何在小程序、网页前端部署AI模型
  5. 谷歌AI:根据视频生成深度图,效果堪比激光雷达
  6. CVPR 2019 | Stereo R-CNN 3D 目标检测
  7. 学会Python真的有高收入?「python笔记」Python对象
  8. CVPR2021论文集锦 | CVPR2021最新论文 | CVPR2021审稿结果 | CVPR2021录取结果
  9. 干货 | YOLOv5在建筑工地中安全帽佩戴检测的应用
  10. DEKR 解构式人体关键点回归(二):标签分配(Label Assignment)