如何创建完整版单例

1.声明单例对象
在.h文件
+(SingleCase *)sharedSingleCase;
     
2.实现单例
在.m文件
SingleCase *  singleCase = nil; 
 
+(SingleCase *)sharedSingleCase{
 
     static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        //        第一次
        //        singleCase = [[SingleCase alloc]init];
        //        singleCase = [SingleCase allocWithZone:NULL]init];
        //        singleCase = [[self alloc]init];
        //        singleCase =  [self allocWithZone:NULL]init];
        singleCase = [[super allocWithZone:NULL]init];
    });
    return singleCase;
}
 
//=================遵守 <NSCopying,NSMutableCopying>
 
-(id)copyWithZone:(NSZone *)zone{
    return self;
}

-(id)mutableCopyWithZone:(NSZone *)zone{
    return self;
}

+(instancetype)allocWithZone:(struct _NSZone *)zone{
    return [SingleCase sharedSingleCase];
}
//防止copy
+ (id)copyWithZone:(NSZone *)zone{
    return [SingleCase sharedSingleCase];
   
}
//防止mutable
+(id)mutableCopyWithZone:(struct _NSZone *)zone
{
    return [SingleCase sharedSingleCase];
}
-(oneway void)release
{
 
}
-(instancetype)autorelease{
    return self;
}
-(instancetype)retain{
    return self;
}
-(NSUInteger)retainCount{
    return NSIntegerMax;
}
 

转载于:https://www.cnblogs.com/xzguo/p/4789272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值