iOS单例

作者: 肖旭晖 | 来源:发表于2020-04-27 16:13 被阅读0次
    • 声明两个全局的静态实例
      static dispatch_once_t _oneToken;
      static ExampleManager _instance;

    • 重写allocWithZone方法.此方法为对象分配空间必须调用方法.

    +(ExampleManager *)shareInstance{
        dispatch_once(&_oneToken, ^{
            _instance = [[ExampleManager alloc] init];
        });
        return _instance;
    }
    
    • 保证copy时相同
    -(id)copyWithZone:(NSZone *)zone{
        return _instance;
    }
    
    • 释放资源
    -(void)destroyInstance{
       
    /*
    只有置成0,GCD才会认为它从未执行过.它默认为0.这样才能保证下次再次调用shareInstance的时候,再次创建对象.
    */
        _oneToken = 0; 
        _instance = nil;
    }
    

    用法实例

    ExampleManager *example = [ExampleManager shareInstance];
    
    [[ExampleManager shareInstance] destroyInstance];
    
    

    相关文章

      网友评论

          本文标题:iOS单例

          本文链接:https://www.haomeiwen.com/subject/rxtuwhtx.html