Object-c之单例模式

原创 2015年11月18日 17:36:35

Objective-c 单例设计模式(Singleton)
一、什么是单例模式:(Singleton)
单例模式的意图是是的类的对象成为系统中唯一的实例,提供一个访问点,供客户类共享资源。

二、什么情况下使用单例?
1、类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问,比如工厂方法。
2、这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码

三、单例设计模式的要点:
(1) 某个类只能有一个实例。
(2)他必须自行创建这个对象
(3)必须自行向整个系统提供这个实例;
(4)为了保证实例的唯一性,我们必须将
-(id)copyWithZone:(NSZone *)zone
+(id)allocWithZone:(NSZone *)zone
-(id)retain、
-(oneway void)release
-(id)autorelease 的实现方法进行覆盖。(具体实现请看程序)
(5)这个方法必须是一个静态类

四、在OC中实现单例模式:
先创建一个单例类,即:
#import

这里写代码片

在实现文件中实现如下:

#import "Bee.h"
@implementation Bee
static Bee  *sharesingleton=nil;//必须声明为一个静态方法
+(Bee *)shareIstance
{
    if (sharesingleton == nil) {//检查唯一实例是否创建
        sharesingleton = [[super allocWithZone:NULL] init ];
// 这里不是使用alloc,而是调用[[super allocWithZone:NULL] init ] ,为什么是super而不是self呢? 这是因为已经在self中冲在了基本对象的分配方法,所以需要借用父类的(NSobject)的功能帮助处理底层内存分配的杂务;    
    }
    return sharesingleton;
}
// 覆盖NSObject方法
+(id)allocWithZone:(NSZone *)zone
{
    return [[self shareIstance] retain];
}
-(id)copyWithZone:(NSZone *)zone
{
    return self;//覆盖父类 NScoping 中的方法
}
-(id)retain
{
    return self;
}
-(NSUInteger)retainCount
{
    return NSUIntegerMax;//无穷大的数,表示不能释放
}
-(oneway void)release
{
    //什么也不做
}
-(id)autorelease
{
    return self;
}

@end
注意:所谓单例,即我们自己创建一个单例类,该类只能生成唯一的对象,即用  if (sharesingleton == nil)    方法来保证唯一性,为了防止该对象被复制(copy)或者retain 和 release 等操作,我们必须在所创建的单例的实现文件( .m 文件)中将父类的这些方法给覆盖,该目的是为了保证单例模式的一个严谨性。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

探究Object-c中的单例模式中的allocWithZone作用的实践

http://cdc.zhaopin.com/infomation/Industryinfo/contentinfo?articleid=1671241925&Category=160400原文  ...

几种语言的单例模式的实现(C++/C#/Object-C)

几种语言的单例模式(C++/C#/Object-C)

IOS开发基础Object-C(12)—单例模式

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 1.单例模式的要点:   显然单例模式的要点有三个;一是某个类只能有一...

Object-c 单例模式中的 allocWithZone作用

最 近因为在ios应用开发中,考虑到一些公共方法的封装使用,就决定使用单例模式的写法了。。不知道,Object-c中的单例模式的写法是否和java中的写法是否有所区别? 于是阿堂从网上一搜,发现“...

object-c 单例模式

转载:http://blog.csdn.net/sqc3375177/article/details/11836521 最近因为在ios应用开发中,考虑到一些公共方法的封装使用,就决定使用单例模...

Object-C 中实现 Singleton (单例) 模式

撰写本文参考于网上的一些帖子,资料,文档。 关于 面向对象的设计模式 对于面向对象的设计模式,想必大家并不陌生吧。 纵观23种设计模式中,数单例模式(Singleton)和工厂模式(Fa...

从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解

关于 面向对象的设计模式 对于面向对象的设计模式,想必大家并不陌生吧。 纵观23种设计模式中,数单例模式(Singleton)和工厂模式(Factory Method)最为熟悉和基础吧...

Object-C 学习笔记(六)---单例设计模式

说到单例,在java学习07-单例设计模式已经说的很清楚,Object-C也是一门面向对象的语言,于是除了写法不同,其他都是大同小异. ---未来会出一套 "设计模式"学习的笔记 原则: (1) ...

Object -c 单例模式

单例模式:(Singleton) 类的对象只实例化一次,外界方便访问,提供共享数据,节约资源占用。 要点: 1.一个类只能实例化一次。 2.必须自行实例化。 3.必须向整个系统提供这...

iOS开发 Object-C ARC模式讲解

Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,...
  • hnjyzqq
  • hnjyzqq
  • 2014年09月13日 13:15
  • 1021
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Object-c之单例模式
举报原因:
原因补充:

(最多只允许输入30个字)