iOS 单例模式

基本概念

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。

使用情况

1.如果说创建一个对象会耗费很多系统资源,那么此时采用单例模式,因为只需要一个实例,会节省alloc的时间
2.在IOS开发中,如果很多模块都要使用同一个变量,此时如果把该变量放入单例类,则所有访问该变量的调用变得很容易,否则,只能通过一个模块传递给另外一个模块,这样增加了风险和复杂度

下面为创建单例的详细过程:

.h
#import <Foundation/Foundation.h>

@interface CYShared : NSObject

@property (nonatomic, copy) NSString *infoNews;


+ (instancetype)sharedManager;

@end
.m
#import "ShareTemp.h"

@implementation ShareTemp

// 废除初始化方法
- (instancetype)init
{
    // 1.抛异常方式
    @throw [NSException exceptionWithName:@"" reason:@"不能调用init方法" userInfo:nil];
    
    // 2.断言方式,判定言论,会让程序崩溃
    //    NSAssert(NO, @"XXX无法调用该方法");
    
    return self;
}

// 重新实现初始化方法
- (instancetype) initPrivate
{
    if (self = [super init]) {
        
    }
    return self;
}

// 实现单例方法
+ (instancetype)sharedManager
{
    static CYShared *dataBase = nil;
    
    // 方式1
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!dataBase) {
            dataBase = [[self alloc] initPrivate];
        }
    });
    
    // 方式2
    //    @synchronized(self) {
    //        if (!dataBase) {
    //            dataBase = [[self alloc] initPrivate];
    //        }
    //    }
    
    return dataBase;
}
@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介: 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统...
    RunnerFL阅读 649评论 0 0
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,298评论 4 34
  • 原链接:http://www.jianshu.com/p/4867dc92337e原作者:仅供我个人收藏学习,原博...
    油菜花花花花阅读 342评论 0 0
  • 单例模式作用 可以保证在程序运行过程中,一个类只有一个实例,而且该实例易于供外界使用 从而方便地控制了实例个数,并...
    珍此良辰阅读 1,363评论 3 8
  • 《大明惊鸿》目录上一章节:No.16 踏雪寻情下一章节:No.18 护花狂者 “怎么了?”我嘀咕了一句,他赶紧示意...
    筱楚白阅读 333评论 1 4