您的位置:首页 > 移动开发 > IOS开发

IOS设计模式之单例设计模式

2015-08-10 13:44 573 查看
单例模式是一种非常常见的设计模式,我们经常用的UIApplication就是一种典型的单例模式,单例理解起来叶很简单,就不是不管如何访问始终只有一个实例化对象,定义全局共享的变量,如果对象是空则初始化一个对象,如果对象已经存在则使用已经实例化的对象。单例设计模式的作用是使得这个类的一个对象成为系统中的唯一实例,它可以省去很多不必要的初始资源的操作,提升了系统性能。

由于在项目中单例模式户经常用到,所以可以将其写成宏放头文件里,这样就可以两行代码搞定单例,附上demo下载地址

在ARC环境下:

//
//  SingletonTool.m
//  Singleton
//
//  Created by JYH on 15/8/10.
//  Copyright (c) 2015年 JYH. All rights reserved.
//

#import "SingletonTool.h"

@implementation SingletonTool
static id _instance;

-(instancetype)init {
if (self = [super init]) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//初始化
});
}
return self;
}

+(instancetype)allocWithZone:(struct _NSZone *)zone {

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}

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

+ (id)copyWithZone:(struct _NSZone *)zone
{
return _instance;
}
@end


而如果是在非ARC的环境下,则还要重写内存管理的那几个方法:

- (oneway void)release
{
}

- (id)autorelease
{
return _instance;
}

- (id)retain
{
return _instance;
}

- (NSUInteger)retainCount
{
return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: