您的位置:首页 > 其它

单列的演练

2015-11-22 15:02 253 查看
特点:

1.内存中只有唯一一个副本

2.提供一个全局的访问点->类方法能够方便访问

目前学过的单列:

- UIApplication

- NSFileManager

- NSUseDefaults

- NSNotifcationCenter;

在iOS 开发中,开发的使用非常频繁,公司面试要求手写单列

#import
<Foundation/Foundation.h>

@interface
diotm : NSObject

//全局访问点

+ (instancetype)sharDitem;

/**

 *  面试中手写单列,写以下代码即可

 关于
allocWithZone
能够保证无论怎么实例化对象,内存中都只有唯一的一个副本

 但是在很多时候,会希望,通过全局访问入口,获得一个单列对象,同时又可以自己实例化新的副本

 */

@implementation
diotm

+ (instancetype)sharDitem{

  //定义一个静态变量来记录对象

    static
id insd;

    //同步

    static
dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        insd = [[self
alloc]init];

    });

    return
insd;

 

}

内存地址一样

八,演示又可以单列,又可以实例化

十.互斥锁也可以进行单列

+ (instancetype)sysnhu{

    static
id insd;

    @synchronized(self) {

        if
(insd == nil) {

           

       

        insd = [[self
alloc]init];

        }

        }

    return
insd;

}

十一,互斥锁和单列进行比较
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: