#import "SingleInstance.h"
@interface SingleInstance ()<NSCopying,NSMutableCopying>
@end
//定义一个当前单例对象的一个实例,并赋值为nil
static SingleInstance *instance = nil;
@implementation SingleInstance
+ (instancetype)sharedInstance
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] init];
});
return instance;
}
/**************真正的单例需重载所有和创建有关的方法**************/
//alloc会触发,防止通过alloc创建一个不同的实例
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [super allocWithZone:zone];
});
return instance;
}
- (id)copyWithZone:(nullable NSZone *)zone
{
return self;
}
- (id)mutableCopyWithZone:(nullable NSZone *)zone
{
return self;
}
/**************手动内存管理需做的操作**************/
- (instancetype)retain
{
return self;
}
- (oneway void)release
{
}
- (instancetype)autorelease
{
return self;
}
- (NSUInteger)retainCount
{
return MAXFLOAT;
}
- (void)dealloc
{
}
@end
iOS 创建单例
最新推荐文章于 2023-09-15 20:42:07 发布