单例

1..m中

 

#import "MySingleton.h"

@implementation MySingleton

static MySingleton *single = nil;

+(MySingleton *)shareSingleton{

    @synchronized(self){

        if (single == nil) {

            single = [[self alloc]init];

        }

        return single;

    }

}

 

#pragma mark - 标准单例需重写以下方法

//杜绝所有可能引起单例对象引用计数加/减的操作

//alloc copy mutableCopy retain new

+(id)allocWithZone:(struct _NSZone *)zone{

    

    @synchronized(self){

        if (single == nil) {

            single = [super allocWithZone:zone];

        }//保证使用的是同一块内存空间

        return single;

    }

}

//[对象指针 减方法]   [类名  加方法]

//copy:把可变/不可变的对象拷贝成一个新的不可变对象

-(id)copyWithZone:(NSZone *)zone{

    return self;

}

//mutableCopy:把可变/不可变的对象拷贝成一个新的可变对象

-(id)mutableCopyWithZone:(NSZone *)zone{

    return self;

}

-(id)retain{

    return self;

}

-(NSUInteger)retainCount{

    return UINT_MAX;    //1

}

-(oneway void)release{

    //oneway:线程间通信的一个接口。表示单向传输

}

-(id)autorelease{

    return self;

}

 

2.UIViewController中

 

 

//调用alloc时,本质上调用的是allocWithZone这个方法

+(id)allocWithZone:(struct _NSZone *)zone{

    NSLog(@"alloc with zone");

    RootViewController *rvc = [super allocWithZone:zone];

    return rvc;

}

 

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值