完整版单例代码

#if 0

+ (SingleCase *)sharedSingleCase

{

    // 上锁

    @synchronized(self){

        if (singleCase == nil) {

            // 几种单例写法

            // singleCase = [[SingleCase alloc] init];

            // singleCase = [SingleCase allocWithZone:<#(struct _NSZone *)#>;

            // singleCase = [[self alloc] init];

            // singleCase = [[self allocWithZone:NULL] init];

            

            singleCase = [[super allocWithZone:NULL] init];

        }

    }

    

    return singleCase;

}

#endif

// 有一种单例的写法

+ (SingleCase *)sharedSingleCase

{

    static dispatch_once_t oneToken;

    dispatch_once(&oneToken, ^{

        singleCase = [[super allocWithZone:NULL] init];

    });

    return singleCase;

}


- (id)copyWithZone:(NSZone *)zone

{

    return self;

}


- (id)mutableCopyWithZone:(NSZone *)zone

{

    return self;

}


// 重写allocWithZone    防止别人alloc

+ (instancetype)allocWithZone:(struct _NSZone *)zone

{

    return [SingleCase sharedSingleCase];

}


//  防止copy   返回的还是同一个对象

+ (id)copyWithZone:(struct _NSZone *)zone

{

     return [SingleCase sharedSingleCase];

}


+ (id)mutableCopyWithZone:(struct _NSZone *)zone

{

     return [SingleCase sharedSingleCase];

}


- (oneway void)release

{

    

}


- (instancetype)autorelease

{

    return self;

}


- (instancetype)retain

{

    return self;

}


- (NSUInteger)retainCount

{

    // 很大的一个数    release消息并没有什么卵用

    return NSUIntegerMax;

}





// 全局静态变量    可以实现对象之间共享   静态存储区

static NSString * phoneNum = nil;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值