Objective-C单例设计模式
来源:互联网 发布:兰蔻网络推广方案 编辑:程序博客网 时间:2024/04/30 14:10
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。单例是一种重要的概念,它是一种极其便利的设计模式。
如果你准备写一个类,希望保证只有一个实例存在,同时可以得到这个特定实例提供服务的入口,那么可以使用单态设计模式。单态模式在Java、C++中很常用,在iOS开发中,单例也是非常有用的设计模式之一。它是在代码间共享数据而不需要手动传递参数的一种最有用的方法。
单例模式设计:
WFSingle.h头文件
#import <Foundation/Foundation.h>
@interface WFSingle : NSObject
@property (nonatomic, assign) NSUInteger max;
+ (instancetype) sharedSingle;
@end
WFSingle.m实现文件
#import "WFSingle.h"
@implementation WFSingle
- (instancetype)init{
@throw [NSException exceptionWithName:@"异常" reason:@"单例不允许调该方法" userInfo:nil];
}
+ (instancetype) sharedSingle{
static WFSingle *single;
if (single == nil) {
@synchronized(self){
if (single == nil) {
single = [[WFSingle alloc] initPrivate];
}
}
}
return single;
}
- (instancetype) initPrivate{
if (self = [super init]) {
_max = 1000000;
}
return self;
}
@end
这样就实现了一个单例模式的类。在单例类中首先要将类的初始化方法设为调用时抛出异常,并不能返回一个对象,这样外界就不能调用init()方法来创建对象了。在类外只能通过单例类的类方法sharedSingle()方法得到一个对象,无论类外调用多少次得到的都是同一个对象。
#import <Foundation/Foundation.h>
#import "WFSingle.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
WFSingle *single1 = [WFSingle sharedSingle];
WFSingle *single2 = [WFSingle sharedSingle];
//无论创建多少个对象指针,都是指向同一个对象
NSLog(@"%@",single1);
NSLog(@"%@",single2);
}
return 0;
}
2016-04-15 17:48:02.207 singleModle[4335:355082] <WFSingle: 0x100114670>
2016-04-15 17:48:02.209 singleModle[4335:355082] <WFSingle: 0x100114670>
由此可见打印的两个类型的指针地址是相同的,即同一个对象。这就是所谓的单例模式。- Objective-C 设计模式之单例
- Objective-c中的单例设计模式
- 设计模式,objective-c单例
- Objective-c ;单例设计模式
- Objective-c 单例设计模式
- objective c单例设计模式
- Objective-c 单例设计模式
- Objective-C之单例设计模式
- Objective-c 实现单例设计模式
- Objective-C单例设计模式
- Objective-C中的设计模式之单例模式
- Objective-c 单例设计模式(Singleton)
- IOS-3-Objective-C语言:单例设计模式
- objective-C之宏定义实现单例设计模式
- Objective C--单例模式
- Objective C--单例模式
- Objective C 单例模式
- Objective C--单例模式
- MySql接口函数
- MP4V2
- Python开源框架对比
- ArcEngine修改像素值与像元值
- Ubuntu上配置Swift的开发环境,基于JetBrains的Clion编辑器
- Objective-C单例设计模式
- AVI Player with Playmaker actions 播放插件浅谈 (一)
- 使用百度地图查询经过某一公交站的所有公交线路
- ProgressBar 颜色的设置
- iOS中关于UIButton缩进问题
- Oracle中由 case when 报错 ORA-12704:字符集不匹配的简易解决
- poi导出excel直接打包的方法
- 基于Activiti5工作流实战企业协同OA办公系统(spring-data-jpa、uur前台组件)
- oj--C++结构体之统计最高最低分