美文网首页
IOS开发-单例模式

IOS开发-单例模式

作者: heigo | 来源:发表于2017-02-15 16:04 被阅读0次

一般情况我们都是这么写:

static MySingleton *shareSingleton;

+( instancetype ) sharedSingleton  {

static  dispatch_once  onceToken;

dispatch_once ( &onceToken, ^ {

shareSingleton = [ [ MySingleton alloc ] init ] ;

} );

return sharedSingleton;

}

但是调用shareInstance方法时获取到的对象是相同的,但是当我们通过alloc和init来构造对象的时候,有时候得到的对象却是不一样的。创建对象的步骤分为申请内存(alloc)、初始化(init)这两个步骤,我们要确保对象的唯一性,因此在第一步这个阶段我们就要拦截它。当我们调用alloc方法时,oc内部会调用allocWithZone这个方法来申请内存,我们覆写这个方法,然后在这个方法中调用shareInstance方法返回单例对象,这样就可以达到我们的目的。拷贝对象也是同样的原理,覆写copyWithZone方法,然后在这个方法中调用shareInstance方法返回单例对象。所以建议以后安全一点都这么写:

static  MySingleton  *shareSingleton = nil;

+( instancetype ) sharedSingleton  {

static  dispatch_once  onceToken;

dispatch_once ( &onceToken, ^ {

shareSingleton  =  [[super allocWithZone:NULL] init] ;

} );

return sharedSingleton;

}

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

return [Singleton shareInstance] ;

}

-(id) copyWithZone:(struct _NSZone *)zone {

return [Singleton shareInstance] ;

}

相关文章

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • iOS单例模式容错处理

    ios 单例模式容错处理 1、单例模式的使用和问题解决 在ios开发的过程中,使用单例模式的场景非常多。系统也有很...

  • iOS 单例模式

    关于单例模式的详解,看完这几篇,就完全了然了。iOS 单例模式iOS中的单例模式iOS单例的写法

  • 单例的2种写法

    单例模式是iOS开发中最常用的设计模式,iOS的单例模式有两种官方写法,如下: 1,常用写法 import "Se...

  • IOS 设计模式

    IOS开发中几种设计模式:单例模式、观察者模式、MVC模式、代理模式 一、单例模式 场景:确保程序运行期某个类,只...

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

  • iOS开发-单例模式

    iOS开发—单例模式 一、简单说明: 设计模式:多年软件开发,总结出来的一套经验、方法和工具 二、单例模式说明 (...

  • iOS中的单例模式

    iOS开发中常用到2中设计模式,分别是代理模式和单例模式,本文主要介绍下单例模式 单例模式的作用 可以保证在程序运...

  • 【浅析iOS中常用设计模式】

    单例模式 单例模式是iOS开发中常用的一种设计模式,目的在于创建一次对象,多地方使用。系统中的单例例如:UIApp...

网友评论

      本文标题:IOS开发-单例模式

      本文链接:https://www.haomeiwen.com/subject/lopqwttx.html