单列的演练


特点:
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;

}

十一,互斥锁和单列进行比较


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值