首页 > 学院 > 开发设计 > 正文

重温-单例模式

2019-11-14 18:20:20
字体:
来源:转载
供稿:网友

1. 单例设计模式(Singleton)

* 保证某个类创建出来的对象永远只有一个

2. 作用

* 节省内存开销。

* 如果有些数据,整个程序中都用得上,只需要使用同一份资源(保证大家访问的数据是相同一致的)

*  一般来说工具类设计为单例模式合适

3. 实现

* MRC

* ARC

SoundTool.h

1 #import <Foundation/Foundation.h>2 3 @interface SoundTool : NSObject <NSCopying>4 5 + (instancetype)shareSoundTool;6 7 @end
View Code

SoundTool.m

#import "SoundTool.h"@implementation SoundToolstatic id _instance = nil;+ (instancetype)allocWithZone:(struct _NSZone *)zone{    if (_instance == nil) {        static dispatch_once_t onceToken;        dispatch_once(&onceToken, ^{            _instance = [super allocWithZone:zone];        });    }    return _instance;}+ (instancetype)shareSoundTool{    return [[self alloc] init];}- (instancetype)init{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        _instance = [super init];    });    return _instance;}+ (instancetype)copyWithZone:(struct _NSZone *)zone{    return _instance;}+ (instancetype)mutableCopyWithZone:(struct _NSZone *)zone{    return _instance;}//以下三个为非ARC使用- (oneway void)release{}- (instancetype)retain{    return _instance;}- (NSUInteger)retainCount{    return 1;}
View Code

4. 建议包装成宏使用


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表