iOS 单例模式
2016-04-28 本文已影响200人
lingxuemy
基本概念
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。
使用情况
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