首页 > 代码库 > iOS 单例模式实现的两种方式
iOS 单例模式实现的两种方式
简述
面向对象应用程序中的单例类(singleton class)总是返回自己的同一个实例。它提供了对象所提供的资源的全局访问点。与这类设计相关的设计模式称为单例模式。
用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。
这个方法应该是静态方法,因为让类的实例去生成另一个唯一实例毫无意义。
2.2 何时使用单例模式
(1)类只能有一个实例,并且必须从一个为人熟知的访问点对其进行访问,比如工厂方法;
(2)这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码。
2.3 单例的原则
(1)发起调用的对象(calling object)不能以其他分配方式实例化单例对象。否则,就有可能创建单例类的多个实例。
(2)对单例对象实例化的限制应用与引用计数内存模型共存。
2.4 Cocoa Touch中常见的单例模式
UIApplication,UIAccelerometer和NSFileManager类。//SharedSingleton.h 文件#import <Foundation/Foundation.h>
@interface SharedSingleton : NSObject{ NSString *name;}@property(nonatomic,retain)NSString *name;+(id)sharedSingleton;@end//SharedSingleton.m文件#import "SharedSingleton.h"
//创建静态变量,初始化为nil
static SharedSingleton *s = nil;@implementation SharedSingleton@synthesize name = _name;+(SharedSingleton *)sharedSingleton{ //第一种方式.// if (s == nil) {// s = [[SharedSingleton alloc]init];// }// return s; //gcd方式 static dispatch_once_t once; dispatch_once(&once,^{ s = [[SharedSingleton alloc]init]; }); return s;}@end
iOS 单例模式实现的两种方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。