iOS单例模式

单例模式

  • 解决“应用中只有一个单例”的一类问题。

Objecttive-C实现原理

  • 单例模式一般会封装一个静态属性,并提供静态实例方法。

代码实现

#import <Foundation/Foundation.h>
@interface WMNewRedPacketManager : NSObject
+ (instancetype)sharedManager;
@end
#import "WMNewRedPacketManager.h"
#import "UIApplication+Addition.h"

static WMNewRedPacketManager *sharedManager = nil;
@implementation WMNewRedPacketManager

+ (instancetype)sharedManager {
    static dispatch_once_t pred;
    dispatch_once(&pred, ^{
        sharedManager = [[self alloc] init];
    });
    return sharedManager;
}

static WMNewRedPacketManager *sharedManager是静态变量,类方法+ (instancetype)sharedManager;sharedManager方法采用了GCD(Grand central Dispatch)技术,是一种基于C语言的多线程访问技术。上述代码中,dispatch_once方法是由GCD提供的结构体,使用时需要将GCG地址创给dispath_once函数。dispath_once能够记录代码块是否被调用过。
dispath_once函数不仅意味着代码块仅会被运行一次,而且还意味着次运行还是线程同步的。也就是说,当我们使用了dispatch_once函数时,就不在需要使用诸如@synchronized之类的语句;

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

推荐阅读更多精彩内容

  • 单例是一种类,该类只能在第一次用的时候实例化一个对象,后期直接调用此对象(有点共享的意思)。 在Foundatio...
    milk_powder阅读 2,405评论 0 0
  • 什么是单例模式: 单例模式是一个类在程序中只有一个实例对象。我们可以从全局的一个入口点对这个实例对象进行访问,通常...
    sakuragi阅读 3,994评论 0 0
  • 本文内容:iOS的单例模式NSUserDefaults的使用总结:iOS单例模式 and NSUserDefaul...
    Kingsleeeey阅读 5,665评论 0 5
  • 单例介绍 本文源码下载地址 1.什么是单例 说到单例首先要提到单例模式,因为单例模式是单例存在的目的 单例模式是一...
    雷鸣1010阅读 8,899评论 0 19
  • 心情特别烦躁,原因是什么呢?是孩子不好好吃饭!啊!我为什么老是为孩子不爱吃饭这种事情烦躁不安啊,真是够了! 熊孩子...
    沐妮阅读 1,547评论 0 0