xml地图|网站地图|网站标签 [设为首页] [加入收藏]

单例模式

来源:http://www.ccidsi.com 作者:呼叫中心培训课程 人气:138 发布时间:2019-11-28
摘要:iOS 单例格局,iOS格局   “ 单例格局 ”是本人在iOS中最常使用的设计情势之生龙活虎。单例形式无需传递任何参数,就使得地清除了分裂代码间的多寡共享难题。单例类是三个那些首要

iOS 单例格局,iOS格局

 

单例格局”是本人在iOS中最常使用的设计情势之生龙活虎。单例形式无需传递任何参数,就使得地清除了分裂代码间的多寡共享难题。单例类是三个那些首要的定义,因为它们表现出了黄金时代种非凡灵光的设计方式。单例类的利用贯穿于一切iOS的SDK中。比方,UIApplication类有多个方式叫sharedApplication,从任什么地区方调用那几个主意,都将重返与近期正值运转的应用程序相关联的UIApplication实例。除了这一个,NSNotificationCenter(新闻中央) 、NSFileManager(文件管理) 、 NSUserDefaults(应用程序设置) 、NSUENVISIONLCache(诉求缓存)、NSHTTP库克ieStorage(应用程序cookies池)都以系统单例;单例类保险了应用程序的生命周期中有且只有三个此类的实例对象,并且轻松外部访谈。

单例格局的主题绪想:

  一是某些类只好有两个实例;二是它必需自行成立那些实例;三是它必需自行向全数系统提供那一个实例。

单例格局的亮点:

  1.实例调节:Singleton 会阻止其余对象实例化其协和的 Singleton 对象的别本,进而保障全部指标都访谈唯黄金年代实例。   2.灵活性:因为类调节了实例化进程,所以类能够更灵敏校订实例化进度 IOS中的单例方式:   在objective-c中要落实多个单例类,起码必要做以下五个步骤:
  1、为单例对象完成多个静态实例,并最初化,然后设置成nil,
  2、实现三个实例构造方法检查上边申明的静态实例是或不是为nil,固然是则新建并赶回二个本类的实例,
  3、重写allocWithZone方法,用来作保别的凡直接运用alloc和init试图拿走三个新实力的时候不发生二个新实例,
  4、适当完毕copyWithZone,release和autorelease。   单例形式的落到实处:

代码示例:

MySingletonClass.h

#import <Foundation/Foundation.h>

@interface MySingletonClass : NSObject
//单例方法

 (MySingletonClass *)sharedInstance;

@end

MySingletonClass.m

 

#import "MySingletonClass.h"

@implementation MySingletonClass

//1、为单例对象实现一个静态实例,并初始化,然后设置成nil,
static MySingletonClass *manager = nil;

//2、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,
 (MySingletonClass *)sharedInstance{

    @synchronized(self) {
        if(manager == nil) {
            manager = [[MySingletonClass  alloc] init]; //   assignment   not   done   here
        }
    }
    return manager;
}

//3、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
 (id)allocWithZone:(NSZone *)zone{
    @synchronized(self){

        if (!manager) {

            manager = [super allocWithZone:zone]; //确保使用同一块内存地址

            return manager;

        }

        return nil;
    }
}

//4、适当实现copyWithZone,release和autorelease。
- (id)init;
{
    @synchronized(self) {

        if (self = [super init]){

            return self;
        }

        return nil;
    }
}

//确保copy对象也是唯一
- (id)copyWithZone:(NSZone *)zone;{

    return self;

}

 

正文示例源码下载:

 

参照他事他说加以侦察链接:

 

 

单例格局,iOS形式 单例情势是小编在iOS中最常使用的设计形式之生龙活虎。单例情势无需传递任何参数,就使得地化解了不相同代码间的数额共...

本文由68399皇家赌场发布于呼叫中心培训课程,转载请注明出处:单例模式

关键词: 68399皇家赌场

上一篇:2越狱工具Electra更新,ios7控制中心

下一篇:没有了

最火资讯