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