#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface ImagePlay : NSObject<NSCopying>
+ (instancetype)sharedClass;
-(void)test;
@end
NS_ASSUME_NONNULL_END
?
?
#import "ImagePlay.h"
static ImagePlay *defaultImagePly = nil;
@implementation ImagePlay
+ (instancetype)sharedClass {
//第一步:静态实例,并初始化
? //??? static CDSharedClass *defaultShared = nil;
??? //第二部:只分配一次内存
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
??? defaultImagePly = [[[self class]alloc]init];
});
return defaultImagePly;
}
//第三部:重载allocWithZone方法
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
??? defaultImagePly = [super allocWithZone:zone];
});
return defaultImagePly;
}
//第四部:重写copyWithZone
- (id)copyWithZone:(NSZone *)zone {
return defaultImagePly;
}
-(void)test{
??? NSLog(@"666");
}
@end
战无不胜oooo