美文网首页
IOS单例创建写法

IOS单例创建写法

作者: 男人宫 | 来源:发表于2022-05-19 14:00 被阅读0次

.h文件

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface CustomManger : NSObject
@property (nonatomic, assign)int count;
+ (CustomManger *)shareCustomerManger;

@end

NS_ASSUME_NONNULL_END

.m文件

@implementation CustomManger

static CustomManger *_manger = nil;
+ (CustomManger *)shareCustomerManger
{
//用dispatch_once保证内存只分配一次
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _manger = [[super allocWithZone:NULL] init];
    });
    return _manger;
}

-(instancetype)init
{
    if ([super init]) {
        NSLog(@"%s",__func__);
        static dispatch_once_t onceToken;
               dispatch_once(&onceToken, ^{
                   //如果有数据初始化时,需要保证初始化也只进行一次
                   self.count = 10;
               });
        
    }
    
    return self;
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
    NSLog(@"%s",__func__);
    return [CustomManger shareCustomerManger];
}

//对对象使用copy也是返回唯一实例
-(instancetype)copyWithZone:(NSZone *)zone {
    
    return  [CustomManger shareCustomerManger];
}

 //对对象使用mutablecopy也是返回唯一实例
-(instancetype)mutableCopyWithZone:(NSZone *)zone {
    
    return  [CustomManger shareCustomerManger];
}

@end

相关文章

  • iOS-两种单例模式的实现

    单例模式是开发中最常用的写法之一,创建一个单例很多办法,iOS的单例模式有两种官方写法,如下: 不使用GCD 某些...

  • IOS单例创建写法

    .h文件 .m文件

  • iOS 单例模式

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

  • iOS开发之进阶篇(5)—— 单例

    目录 最终推荐写法 何为单例? 对象的创建 单例写法的讨论过程 1. 最终推荐写法 1.1 OC SingleOb...

  • 单例的2种写法

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

  • 单例模式的使用

    单例的写法以及使用场景 //单例的写法 1.创建一个继承自OSobject的文件 LMSingletion sta...

  • Android中常见的内存泄漏汇总

    1.单例模式的错误写法 单例模式的正确写法: 2.非静态内部类创建静态实例造成的内存泄漏错误写法 正确写法:将该内...

  • ios~单例模式:

    在iOS OC中,一般我们都是用官方推荐的写法来写单例:GCD方式单例 分析单例 static SharedPer...

  • 单例设计模式

    单例设计模式:解决的是一个类只能创建一个对象 iOS的单例模式有两种官方写法,如下: 1)不使用GCD的方式 #i...

  • ios 单例写法

网友评论

      本文标题:IOS单例创建写法

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