iOS定义一个单例

2020-03-21  本文已影响0人  _菩提本无树_

目前了解到的有两种写法,但是思想都是一样的

第一种

使用dispatch_once实现,
+ (instancetype)sharedSingleton {
    static Singleton *_sharedSingleton = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
          // 要使用self来调用
        _sharedSingleton = [[self alloc] init];
    });
    return _sharedSingleton;
}


第二种,通过定义全局静态变量来实现

//
//  DDSingleton.h
//  AdvancePlan
//
//  Created by 董德帅 on 2020/3/21.
//  Copyright © 2020 www.dong.com 董德帅. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface DDSingleton : NSObject

+(id)instance;

@end

NS_ASSUME_NONNULL_END




//
//  DDSingleton.m
//  AdvancePlan
//
//  Created by 董德帅 on 2020/3/21.
//  Copyright © 2020 www.dong.com 董德帅. All rights reserved.
//

#import "DDSingleton.h"

@implementation DDSingleton
static DDSingleton * singleton;
+ (id)instance{
    if (!singleton) {
        singleton = [[DDSingleton alloc]init];
    }
    return singleton;
}
end

上一篇 下一篇

猜你喜欢

热点阅读