iOS单例
来源:互联网 发布:软件外包管理流程 编辑:程序博客网 时间:2024/06/07 22:28
单例模式是iOS常用设计模式中的一种。单例设计模式的作用是使得这个类的一个对象成为系统中的唯一实例,因此需要用一种唯一的方法去创建这个对象并返回这个对象的地址。
.h文件
#import <Foundation/Foundation.h>
@interface DemoObj : NSObject
// 共享实例,便于其他类访问
+ (instancetype)sharedDemoObj;
@end
#import "DemoObj.h"
@implementation DemoObj
static DemoObj *instance;
/**
1. 重写allocWithZone,用dispatch_once实例化一个静态变量
2. 写一个+sharedXXX方便其他类调用
*/
// 在iOS中,所有对象的内存空间的分配,最终都会调用allocWithZone方法
// 如果要做单例,需要重写此方法
// GCD提供了一个方法,专门用来创建单例的
+ (id)allocWithZone:(struct_NSZone *)zone
{
static DemoObj *instance;
// dispatch_once是线程安全的,onceToken默认为0
static dispatch_once_t onceToken;
// dispatch_once宏可以保证块代码中的指令只被执行一次
dispatch_once(&onceToken, ^{
//在多线程环境下,永远只会被执行一次,instance只会被实例化一次
instance = [super allocWithZone:zone];
});
return instance;
}
+ (instancetype)sharedDemoObj
{
return [[selfalloc] init];
}
@end
- iOS单例模式
- iOS 单例模式
- IOS 单例模式
- iOS单例
- iOS 单例模式
- IOS 单例
- IOS 单例
- IOS单例模式
- ios单例模式
- iOS单例
- iOS 单例,委托
- iOS 单例模式
- iOS 单例模式
- IOS单例模式
- ios单例Singleton
- iOS 单例
- iOS 单例浅谈
- IOS 之 单例
- LR:回放脚本时如何实时查看脚本的运行情况?
- 面试题-在HTML中每隔3行改变一次颜色
- nodejs 注意杂谈
- 手机sd卡清除扣扣邮箱图片文件怎么恢复
- Linux:使用ulimit设置文件最大打开数
- iOS单例
- 解题报告 之 SOJ4426 Counting_3
- Elasticsearch之Nested(嵌套)系列
- 自学ios之路(1)
- 自适应header、footer和全屏视图
- 2015 前端[JS]工程师必知必会
- 《公司不是家》作者回应柳传志:我们有车有房了
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
- Mybatis/Ibatis,数据库操作的返回值