参考文章https://www.jianshu.com/p/684895b89a26
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface DataManager : NSObject
+ (instancetype)shareManager;
-(instancetype)init NS_UNAVAILABLE;
+(instancetype)new NS_UNAVAILABLE;
@end
NS_ASSUME_NONNULL_END
#import "DataManager.h"
@interface DataManager()<NSCopying,NSMutableCopying>
@end
static DataManager *manager = nil;
@implementation DataManager
+ (instancetype)shareManager{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[self alloc]init];
});
return manager;
}
+ (id)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [super allocWithZone:zone];
});
return manager;
}
- (nonnull id)copyWithZone:(nullable NSZone *)zone {
return manager;
}
- (nonnull id)mutableCopyWithZone:(nullable NSZone *)zone {
return manager;
}
@end
网友评论