美文网首页iOS-随笔
IOS开发-单例设计模式解读

IOS开发-单例设计模式解读

作者: 像羽毛那样轻 | 来源:发表于2016-06-21 15:38 被阅读39次

摘要

单例的设计思想非常巧妙,是面向对象语言的一大优势,在需要全局资源共享的对象时,经常会用到这种设计模式。

IOS 中单例设计模式的解读与用法

一、单例的作用

顾名思义,单例,即是在整个项目中,这个类的对象只能被初始化一次。它的这种特性,可以广泛应用于某些需要全局共享的资源中,比如管理类,引擎类,也可以通过单例来实现传值。UIApplication、NSUserDefaults等都是IOS中的系统单例。

二、单例的写法

单例的写法常用的有两种方式:

方式1、不考虑线程

static SingleCase *manager = nil;

+ (SingleCase *)defaultManager {

if (!manager){

 SingleCase = [[self alloc] init];

 return manager;

}

}

方式2、考虑线程安全

+ (SingleCase *)sharedManager

{

static SingleCase *ManagerInstance = nil;

static dispatch_once_t predicate;

dispatch_once(&predicate, ^{

ManagerInstance = [[self alloc] init];

});

return ManagerInstance;

}

三、代码的优化

通过上面的方法,我们已经可以使用类方法来得到这个单例,但很多时候,项目的工程量很大,还有可能会很多开发者同时参与一个项目的开发,为了安全与管理代码的方便,也为了给不是这个单例的创作者但会用到这个单例的开发人员一些提示,我们通常会重写一些方法:

首先我们自己实现一个alloc方法:

+(instancetype)myAlloc{

   return [super allocWithZone:nil];

}

将我们的单例实现方法略作修改:

+(ZYHPayManager *)sharedMamager{

static ZYHPayManager * manager;

if (manager==nil) {

manager=[[ZYHPayManager myAlloc]init];

}

return manager;

}

将一些视图实例化对象的方法重写:

+(instancetype)alloc{

   NSAssert(0, @"这是一个单例对象,请使用+(ZYHPayManager *)sharedMamager方法");

  return nil;

}

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

   return [self alloc];

}

-(id)copy{

     NSLog(@"这是一个单例对象,copy将不起任何作用");

return self;

}

+(instancetype)new{

   return  [self alloc];

}

注意:这里的alloc使用了断言,让任何视图通过alloc创建对象的程序段断在此处,给程序员提示。copy方法这里只是简单的返回了原对象,并未做任何处理,打印信息给程序员提示。

相关文章

  • 单例的2种写法

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

  • IOS 设计模式

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

  • iOS开发-单例模式

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

  • iOS中的单例模式

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

  • IOS开发-单例设计模式解读

    摘要 单例的设计思想非常巧妙,是面向对象语言的一大优势,在需要全局资源共享的对象时,经常会用到这种设计模式。 IO...

  • iOS单例设计模式

    在iOS的开发中,单例设计模式(Singleton Pattern)是用得最多的设计模式之一了。在iOS的SDK中...

  • IOS开发过程中常用的设计模式

    当下IOS开发的过程中,常用的设计模式有:单例模式、委托模式、观察者模式和MVC模式; 一、单例模式 我们平时常用...

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

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

  • iOS模式设计之--创建型:1、单例模式

    iOS模式设计之--1、单例模式

  • 03-设计模式(包括KVO/KVC)

    iOS开发常用设计模式? 详细blog链接 MVC模式 MVVM模式 代理模式 单例模式 工厂模式 装饰者模式 观...

网友评论

    本文标题:IOS开发-单例设计模式解读

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