A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

+(id)allocWithZone:(NSZone * )zone  //重写父类的alloc方法
{
    //懒汉式:
//    if (_instance==nil) {
//        @synchronized(self){        //加锁
//            if(_instance==nil){
//                _instance=[[self alloc]init];
//            }
//        }
//    }
    //GCD模式
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken,^{
        _instance=[[super allocWithZone:zone];
    });
    return _instance;   
}
+(instancetype)sharedDatatool    //判断_instance属性是否为空,若为空,则加线程锁,           //防止其他线程同时访问,再次判断_instance是                   //        否为空,若为空,则为其分配内存空间
{
   
    //懒汉式:
//    if(_instance==nil){
//        @synchronized (self){
//            if(_instance==nil){
//                _instance=[[[self alloc]init];
//            }
//        }
//    }
    //GCD模式  
  static dispatch_once_t onceToken;
    dispatch_once(&onceToken,^{
        _instance=[[self alloc]init];
    });
      return _instance;
}
-(id)copyWithZone:(NSZone *)zone             //重写父类的copy方法,使该方法                                //直接返回属性值,不再对属性做        //处理,防止外部利用copy方法实        //现对_instance的篡改
{
    return _instance;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马