iOS 开发-单例

单例模式是一种既简单又实用的开发模式,重要是我们需要理解单例模式的思想。
单例?顾名思义就是单一的实例,也就是一个类只有一个实例对象。
怎样才能只存在一个实例对象呢?我们判断两个对象是否是同一个对象 是根据他们在内存中的地址来判断的,因此,我们在实现单例的时候,就需要在给对象分配内存地址时只分配一次就可以实现一个类的实例永远只存在一个。
我们知道alloc方法是分配内存的,其实alloc方法内部调用了+(instancetype)allocWithZone:(struct _NSZone *)zone方法,所以我们只需要重写这个方法即可。

.h文件

#import <Foundation/Foundation.h>

@interface SingleObject : NSObject

//命名规范:share+类名|default + 类名
+(instancetype)shareSingleObject;

@end

.m文件

#import "SingleObject.h"

@implementation SingleObject

//0.提供全局变量
static SingleObject *_instance;

//1.alloc-->allocWithZone
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
    //一次性代码本身就是线程安全的
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [super allocWithZone:zone];
    });
    
    return _instance;
}

//2.提供类方法
+(instancetype)shareSingleObject
{
    return [[self alloc]init];
}

//3.严谨
-(id)copyWithZone:(NSZone *)zone
{
    return _instance;
}

-(id)mutableCopyWithZone:(NSZone *)zone
{
    return _instance;
}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 近期会对ios开发过程中常用的设计模式进行简单的归纳总结,希望大家继续关注我的博客; iOS开发常见设计模式:MV...
    王小智阅读 8,959评论 0 13
  • 系列:iOS开发-单例模式 在我们做开发的时候经常会遇到需要在很多地方调用同一个对象的现象,比如在一个类中,我们可...
    spicyShrimp阅读 2,895评论 0 3
  • 单例的使用以及制定 我们先来了解何为单利:单例模式是一种常用的软件设计模式,通过单例模式可以保证系统中一个类只有一...
    爱吃鱼的小灰阅读 2,463评论 0 5
  • iOS开发—单例模式 一、简单说明: 设计模式:多年软件开发,总结出来的一套经验、方法和工具 二、单例模式说明 (...
    牛仔裤小毛驴阅读 3,851评论 0 0
  • 编辑前语 单例(Singletons),是Cocoa的核心模式之一。在iOS上,单例十分常见,比如:UIAppli...
    宇亭阅读 4,583评论 1 2