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